/// *********************************** class CAM_Main *********************************** /// /// **** CAM_Main.cpp **** /// /* WARNING: Removing unreachable block (ram,0x0000e264) */ void FUN_0000e24c(void) { __gmon_start__(); return; } void FUN_0000e2bc(int iParm1,char *pcParm2,undefined4 uParm3,undefined4 uParm4) // print to log { FILE *__s; FILE **ppFVar1; undefined4 uStack8; undefined4 uStack4; if (iParm1 < 8) { ppFVar1 = (FILE **)&libaplog_to_module_ptr; if (libaplog_to_module_ptr == (FILE *)0x0) { ppFVar1 = (FILE **)&stdout; } __s = libaplog_to_module_ptr; if (libaplog_to_module_ptr == (FILE *)0x0) { __s = *ppFVar1; } uStack8 = uParm3; uStack4 = uParm4; vfprintf(__s,pcParm2,&uStack8); } return; } void FUN_0000e440(int iParm1) // asyncStartVideoLandscape { undefined4 uVar1; int iVar2; undefined4 uVar3; int iVar4; undefined4 uVar5; undefined4 local_38; int local_34; int local_30; int local_2c; int local_28; undefined4 local_24; iVar4 = 0; uVar5 = 0; FUN_0000e2bc(8,"asyncStartVideoLandscape"); // print to log camManager(); // libezxcameraengine.so globalModel(); getVideoSize((int)&local_28); // libezxcamera.so if (m_isAvailableFullScreen == 0) { camManager(); // libezxcameraengine.so iVar2 = globalModel(); if (*(int *)(iVar2 + 0x108) == 0) { iVar4 = 0x60; uVar5 = 0x48; local_38 = 0x80; local_2c = iVar4; } else { camManager(); // libezxcameraengine.so iVar2 = globalModel(); local_38 = 0; local_2c = 0; if (*(int *)(iVar2 + 0x108) == 1) { uVar5 = 0x30; iVar4 = 0x48; local_38 = 0xb0; local_2c = 0x90; } } camManager(); // libezxcameraengine.so uVar1 = engineInterface(); // libezxcamera.so FUN_000146e4(uVar1,uVar5,iVar4); // void setViewfinderOffset() camManager(); // libezxcameraengine.so iVar4 = engineInterface(); // libezxcamera.so uVar3 = 2; *(undefined4 *)(iVar4 + 0x114) = 2; camManager(); // libezxcameraengine.so uVar1 = engineInterface(); // libezxcamera.so uVar5 = isSlideClose(); } else { // if (m_isAvailableFullScreen == 0) camManager(); // libezxcameraengine.so globalModel(); getVFByScreenSize(); // libezxcamera.so __aeabi_idiv(local_28 * local_30,local_24); camManager(); // libezxcameraengine.so globalModel(); getVFByScreenSize(); // libezxcamera.so getVideoRecordingSize((int)&local_30,iParm1 + 0x3c); camManager(); // libezxcameraengine.so globalModel(); getVFByScreenSize(); // libezxcamera.so camManager(); // libezxcameraengine.so globalModel(); getVFByScreenSize(); // libezxcamera.so camManager(); // libezxcameraengine.so uVar5 = engineInterface(); // libezxcamera.so FUN_000146e4(uVar5,0,(int)((local_34 - local_2c) + ((uint)(local_34 - local_2c) >> 0x1f)) >> 1); // void setViewfinderOffset() camManager(); // libezxcameraengine.so uVar1 = engineInterface(); // libezxcamera.so uVar5 = isSlideClose(); uVar3 = 1; } FUN_00012988(uVar1,local_38,local_2c,uVar3,uVar5); // ???asyncStartPreview return; } void FUN_0000e638(void) { int iVar1; undefined4 uVar2; undefined4 uVar3; undefined4 uVar4; undefined4 uVar5; uVar4 = 0; uVar3 = 0; uVar5 = 0; FUN_0000e2bc(8,"asyncStartVideoPortrait"); // print to log camManager(); // libezxcameraengine.so iVar1 = globalModel(); if (*(int *)(iVar1 + 0x108) == 0) { uVar3 = 6; uVar5 = 0xf0; uVar4 = 0xb8; } else { camManager(); // libezxcameraengine.so iVar1 = globalModel(); if (*(int *)(iVar1 + 0x108) == 1) { uVar3 = 2; uVar5 = 0xf0; uVar4 = 200; } } camManager(); // libezxcameraengine.so uVar2 = engineInterface(); // libezxcamera.so FUN_000146e4(uVar2,0,uVar3); // void setViewfinderOffset() camManager(); // libezxcameraengine.so iVar1 = engineInterface(); // libezxcamera.so *(undefined4 *)(iVar1 + 0x114) = 2; camManager(); // libezxcameraengine.so uVar3 = engineInterface(); // libezxcamera.so uVar2 = isSlideClose(); FUN_00012988(uVar3,uVar5,uVar4,2,uVar2); // ???asyncStartPreview return; } void FUN_0000e7cc(int iParm1,int iParm2) // void asyncStartVideo() { undefined4 uVar1; undefined4 uVar2; int iVar3; undefined4 uVar4; undefined4 local_28; undefined4 local_24; iVar3 = UTIL_GetFlipStatus(); a_isRunCLI = iVar3 == 1; if (iParm2 == 0) { FUN_0000e2bc(8,"Entering function %s\n","asyncStartVideo"); // print to log camManager(); // libezxcameraengine.so uVar1 = engineInterface(); // libezxcamera.so camManager(); // libezxcameraengine.so globalModel(); getVideoSize((int)&local_28); // libezxcamera.so camManager(); // libezxcameraengine.so iVar3 = globalModel(); uVar4 = *(undefined4 *)(iVar3 + 0x10c); uVar2 = isSlideClose(); FUN_00012e3c(uVar1,local_28,local_24,uVar4,uVar2); // void loadRecSetting() FUN_0000e440(iParm1); // asyncStartVideoLandscape pa_step("Before Video Show Frame"); showFrame(iParm1 + 0x3c); pa_step("After Video Show Frame"); FUN_0000e2bc(8,"Exiting function %s\n","asyncStartVideo"); // print to log return; } FUN_0000e2bc(8,"asynStartPhoto"); // print to log camManager(); // libezxcameraengine.so uVar1 = engineInterface(); // libezxcamera.so camManager(); // libezxcameraengine.so globalModel(); getPhotoSize((int)&local_28); camManager(); // libezxcameraengine.so iVar3 = globalModel(); uVar4 = *(undefined4 *)(iVar3 + 0x158); uVar2 = isSlideClose(); FUN_000141c0(uVar1,local_28,local_24,uVar4,uVar2); // void loadCapSetting() camManager(); // libezxcameraengine.so globalModel(); getVFByScreenSize(); // libezxcamera.so camManager(); // libezxcameraengine.so globalModel(); getVFByScreenSize(); // libezxcamera.so camManager(); // libezxcameraengine.so uVar1 = engineInterface(); // libezxcamera.so FUN_000146e4(uVar1,0,0); // void setViewfinderOffset() camManager(); // libezxcameraengine.so iVar3 = engineInterface(); // libezxcamera.so *(undefined4 *)(iVar3 + 0x114) = 1; camManager(); // libezxcameraengine.so uVar1 = engineInterface(); // libezxcamera.so uVar2 = isSlideClose(); FUN_00012988(uVar1,local_28,local_24,1,uVar2); // ???asyncStartPreview pa_step("Before Photo Show the Firest Frame"); showFrame(iParm1 + 0x3c); pa_step("After Photo Show the Firest Frame"); return; } // создание обьекта приложения undefined ** FUN_0000e820(undefined **param_1,undefined4 param_2,int *param_3,char **param_4,Type param_5) undefined ** FUN_0000ea30(undefined **param_1,undefined4 param_2,int *param_3,char **param_4,Type param_5) { QTimer *this; ZApplication((ZApplication *)param_1,param_3,param_4,param_5); CAM_UI_Manager((CAM_UI_Manager *)(param_1 + 0xf),SUB41(param_2,0),"",false); // libezxcamera.so param_1[0xf] = (undefined *)0x1a5e8; *(undefined ***)param_1 = &PTR_FUN_0001a538; FUN_0000e2bc(8,"Show first frame"); // print to log /// проверка по счетчику // void slotCheckACSRunning() // msg The Camera is Busy this = (QTimer *)operator.new(0x2c); QTimer(this,(QObject *)param_1,(char *)0x0); *(QTimer **)(param_1 + 0x3d) = this; connect((QObject *)this,"2timeout()",(QObject *)param_1,"1slotCheckACSRunning()"); start((int)param_1[0x3d],true); /// int timeoutQuitSlot() installEventFilter((QObject *)param_1); this = (QTimer *)operator.new(0x2c); QTimer(this,(QObject *)param_1,(char *)0x0); *(QTimer **)(param_1 + 0x3e) = this; connect((QObject *)this,"2timeout()",(QObject *)param_1,"1timeoutQuitSlot()"); start((int)param_1[0x3e],true); /// checkViewfinderSlot this = (QTimer *)operator.new(0x2c); QTimer(this,(QObject *)param_1,(char *)0x0); *(QTimer **)(param_1 + 0x3f) = this; connect((QObject *)this,"2timeout()",(QObject *)param_1,"1checkViewfinderSlot()"); this = (QTimer *)operator.new(0x2c); QTimer(this,(QObject *)param_1,(char *)0x0); *(QTimer **)(param_1 + 0x40) = this; connect((QObject *)this,"2timeout()",(QObject *)param_1,"1switchViewSlot()"); connect((QObject *)param_1,"2flipStatusChanged(int)",(QObject *)param_1,"1flipStatusChanged(int)"); connect((QObject *)param_1,"2sliderStatusChanged(int)",(QObject *)param_1, "1sliderStatusChanged(int)"); connect((QObject *)param_1,"2systemMessage(const QCString&, const QByteArray&)",(QObject *)param_1 ,"1slotHotPlugUpdateMainWindow(const QCString&, const QByteArray&)"); camManager(); // libezxcameraengine.so startACSListener(); // apps_acs pa_step("Before asyncStartCamera"); FUN_0000e7cc(param_1,param_2); // void asyncStartVideo() UTIL_SetCameraStatus(1); pa_step("After asyncStartCamera"); FUN_0000e2bc(8,"Exiting function %s\n","CAM_UI_App"); // print to log return param_1; } void FUN_0000ec40(int *piParm1) // void slotReturnToIdle() { FUN_0000e2bc(8,"Entering function %s\n","slotReturnToIdle"); // print to log askDialogsDismiss((int)piParm1); (**(code **)(*piParm1 + 0x54))(piParm1); FUN_0000e2bc(8,"Exiting function %s\n","slotReturnToIdle"); // print to log return; } void FUN_0000ec9c(int *piParm1) // void quickQuit() { FUN_0000e2bc(8,"Entering function %s\n","quickQuit"); // print to log (**(code **)(*piParm1 + 0x54))(piParm1); FUN_0000e2bc(8,"Exiting function %s\n","quickQuit"); // print to log return; } void FUN_0000ecf0(int iParm1) // void slotCheckACSRunning() // msg The Camera is Busy { __mode_t __mask; int __fd; int iVar1; int *this; int *piVar2; QPixmap aQStack72 [24]; RES_ICON_Reader aRStack48 [8]; int *local_28 [2]; int *local_20 [2]; __mask = umask(0); __fd = open("/tmp/.acs_running",0x42,0x1b6); if ((__fd == -1) || (iVar1 = flock(__fd,6), iVar1 != -1)) { umask(__mask); if (*(char *)(iParm1 + 0xe4) == 0) { piVar2 = (int *)(uint)*(byte *)(iParm1 + 0xe5); if (*(byte *)(iParm1 + 0xe5) == 0) { QString((QString *)local_20," "); FUN_00010f58(local_28,"TXT_RID_INSTRUCTIONALTXT_THE_CAMERA_IS_BUSY","The Camera is Busy"); this = (int *)operator.new(0xbc); ZPopupLandscapeDlg((ZPopupLandscapeDlg *)this,1,1000,(QString *)local_20,(QString *)local_28 ,(QWidget *)piVar2,(char *)piVar2,true,(uint)piVar2); /* __fd = *local_28[0]; *local_28[0] = __fd + -1; if (__fd + -1 == 0) { if (local_28[0] == piRam000249ac) { piRam000249ac = piVar2; } deleteSelf(); } __fd = *local_20[0]; *local_20[0] = __fd + -1; if (__fd + -1 == 0) { if (local_20[0] == piRam000249ac) { piRam000249ac = (int *)0x0; } deleteSelf(); }*/ RES_ICON_Reader(aRStack48); getIcon((char *)aQStack72,SUB41(aRStack48,0)); setTitleIcon((QPixmap *)this); ~QPixmap(aQStack72); exec(); if (this != (int *)0x0) { (**(code **)(*this + 4))(this); } ~RES_ICON_Reader(aRStack48); } FUN_0000e2bc(8,"ACS is down! - shutting down CAM APP!\n"); // print to log FUN_0000ec9c(iParm1); // void quickQuit() } } else { close(__fd); umask(__mask); } return; } void FUN_0000eebc(QObject *pQParm1) // void slotQuickQuit() { int iVar1; int *piVar2; timezone tStack32; timeval local_18; FUN_0000e2bc(8,"Entering function %s\n","slotQuickQuit"); // print to log FUN_0000e2bc(8,"AM force us to quit, current Frame ID is %d",*(undefined4 *)(pQParm1 + 0xb0)); // print to log gettimeofday(&local_18,(__timezone_ptr_t)&tStack32); camManager(); // libezxcameraengine.so iVar1 = engineInterface(); // libezxcamera.so if (*(int *)(iVar1 + 0x110) == 2) { iVar1 = (local_18.tv_usec / 1000 + local_18.tv_sec * 1000) - captureNow; } else { camManager(iVar1,local_18.tv_usec * 0x10624dd3); iVar1 = engineInterface(); // libezxcamera.so iVar1 = (local_18.tv_usec / 1000 + local_18.tv_sec * 1000) - *(int *)(iVar1 + 0x88); } FUN_0000e2bc(8,"~~~~~~~~difftime:%ld\n",iVar1); // print to log if (iVar1 - 1U < 1999) { singleShot(0x802 - iVar1,pQParm1,"1slotQuickQuit()"); return; } pQParm1[0xe4] = (QObject)0x1; if (*(int *)(pQParm1 + 0xb0) == 0xb) { iVar1 = camManager(); // libezxcameraengine.so piVar2 = (int *)(**(code **)(**(int **)(iVar1 + 0x70) + 0x14))(*(int **)(iVar1 + 0x70)); iVar1 = (**(code **)(*piVar2 + 0x3c))(); if (iVar1 == 0) { camManager(); // libezxcameraengine.so engineInterface(); // libezxcamera.so iVar1 = FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() sendACSMsg(iVar1); // apps_acs } camManager(); // libezxcameraengine.so engineInterface(); // libezxcamera.so FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() stopVFTracking(); camManager(); // libezxcameraengine.so engineInterface(); // libezxcamera.so FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() stopPanorama(); } camManager(); // libezxcameraengine.so iVar1 = engineInterface(); // libezxcamera.so if (*(int *)(iVar1 + 0x110) == 2) { camManager(); // libezxcameraengine.so engineInterface(); // libezxcamera.so FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() piVar2 = (int *)videoCtl(); (**(code **)(*piVar2 + 0x20))(); } else { camManager(); // libezxcameraengine.so engineInterface(); // libezxcamera.so FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() photoCtl(); end(); } camManager(); // libezxcameraengine.so engineInterface(); // libezxcamera.so FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() piVar2 = (int *)viewfinderCtl(); iVar1 = (**(code **)(*piVar2 + 0x1c))(); if (iVar1 == 0) { camManager(); // libezxcameraengine.so engineInterface(); // libezxcamera.so FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() piVar2 = (int *)viewfinderCtl(); iVar1 = (**(code **)(*piVar2 + 0x18))(); if (iVar1 == 0) goto LAB_0000f008; } camManager(); // libezxcameraengine.so engineInterface(); // libezxcamera.so FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() piVar2 = (int *)viewfinderCtl(); (**(code **)(*piVar2 + 0x14))(); LAB_0000f008: quit(); FUN_0000e2bc(8,"Exiting function %s\n","slotQuickQuit"); // print to log return; } void FUN_0000f230(int *piParm1) { (**(code **)(*piParm1 + 0x9c))(); return; } int * FUN_0000f24c(int *piParm1) // int timeoutQuitSlot() { int iVar1; undefined4 uVar2; int *piVar3; FUN_0000e2bc(8,"Entering function %s\n","timeoutQuitSlot"); // print to log camManager(); // libezxcameraengine.so iVar1 = engineInterface(); // libezxcamera.so if (*(int *)(iVar1 + 0x110) == 2) { camManager(); // libezxcameraengine.so engineInterface(); // libezxcamera.so FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() piVar3 = (int *)videoCtl(); iVar1 = (**(code **)(*piVar3 + 0x2c))(); if (iVar1 == 0) { return (int *)0x0; } } if (*(char *)(piParm1 + 0x36) == 0) { (**(code **)(*piParm1 + 0x54))(); uVar2 = FUN_0000e2bc(8,"Exiting function %s\n","timeoutQuitSlot"); // print to log return (int *)uVar2; } return piParm1; } void FUN_0000f2e0(int iParm1) // void restartTimerSlot() { int iVar1; FUN_0000e2bc(8,"Entering function %s\n","restartTimerSlot"); // print to log camManager(); // libezxcameraengine.so engineInterface(); // libezxcamera.so iVar1 = FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() sendACSMsg(iVar1,0x2916); // apps_acs if (-1 < *(int *)(*(int *)(iParm1 + 0xf8) + 0x24)) { stop(); } iVar1 = UTIL_GetFlipStatus(); if (iVar1 != 1) { start(*(int *)(iParm1 + 0xf8),true); } FUN_0000e2bc(8,"Exiting function %s\n","restartTimerSlot"); // print to log return; } void FUN_0000f3ac(void) // void switchViewSlot() { bool bVar1; int iVar2; FUN_0000e2bc(8,"~~~~~~before updateView()\n"); // print to log iVar2 = camManager(); // libezxcameraengine.so if (*(char *)(iVar2 + 0xad) != 0) { FUN_0000e2bc(8,"~~~~~~~~~~~~ capturing when switch to maindisplay, cancel capture\n"); // print to log camManager(); // libezxcameraengine.so engineInterface(); // libezxcamera.so FUN_00013594(); // void cancelCapturePhoto() bVar1 = (bool)camManager(); // libezxcameraengine.so setCapturing(bVar1); } iVar2 = UTIL_GetFlipStatus(); a_isRunCLI = iVar2 == 1; updateView(); FUN_0000e2bc(8,"~~~~~~after updateView()\n"); // print to log return; } uint FUN_0000f440(int *piParm1,QEvent *pQParm2,int iParm3) // { undefined4 uVar1; uint uVar2; uVar2 = (uint)(iParm3 == 0 || pQParm2 == (QEvent *)0x0); uVar1 = 1; if (iParm3 != 0 && pQParm2 != (QEvent *)0x0) { if (*(int *)(iParm3 + 4) == 7) { if (*(short *)(iParm3 + 0x10) == -0xfa) { debug("chameleon/CAM_UI_App.cpp","eventFilter",0x250,uVar2,"\n Lens Cover Closed \n"); (**(code **)(*piParm1 + 0x54))(piParm1); return uVar2; } } else { if (*(int *)(iParm3 + 4) == 6) { debug("chameleon/CAM_UI_App.cpp","eventFilter",600,uVar2,"\nRestart timer slot\n"); FUN_0000f2e0(piParm1); // void restartTimerSlot() } } uVar1 = eventFilter((QObject *)piParm1,pQParm2); } return uVar1; } void FUN_0000f520(int iParm1) // void handleAction(AM_ActionData) { int iVar1; int *local_18 [2]; action(); iVar1 = operator==((QString *)local_18,"TakingPhoto"); if ((iVar1 != 0) || (iVar1 = operator==((QString *)local_18,"RecordingVideo"), iVar1 != 0)) { switchMode(iParm1 + 0x3c); } /* iVar1 = *local_18[0]; *local_18[0] = iVar1 + -1; if (iVar1 + -1 == 0) { if (local_18[0] == shared_null) { shared_null = (int *)0x0; } deleteSelf(); }*/ return; } undefined4 FUN_0000f5c4(undefined4 uParm1,bool bParm2) // получения пид какого-то процесса { char *__command; FILE *__stream; int iVar1; int iVar2; undefined4 uVar3; int *local_70 [2]; int *local_68 [2]; QTextStream aQStack96 [48]; int *local_30 [3]; uVar3 = 0; QString((QString *)local_30,"ps > "); operator+=((QString *)local_30,"/tmp/.CAM_PROC_TMP.pid"); __command = (char *)latin1(); system(__command); __stream = fopen("/tmp/.CAM_PROC_TMP.pid","r"); if (__stream != (FILE *)0x0) { QTextStream(aQStack96,(_IO_FILE *)__stream,1); local_68[0] = piRam000249ac; if (piRam000249ac == (int *)0x0) { local_68[0] = (int *)makeSharedNull(); } *local_68[0] = *local_68[0] + 1; do { readLine(); operator=((QString *)local_68,(QString *)local_70); iVar2 = *local_70[0]; iVar1 = local_68[0][4]; if (iVar1 != 0) { iVar1 = 1; } /* *local_70[0] = iVar2 + -1; if (iVar2 + -1 == 0) { if (local_70[0] == piRam000249ac) { piRam000249ac = (int *)0x0; } deleteSelf(); }*/ if (iVar1 == 0) goto LAB_0000f6c8; iVar1 = contains((QString *)local_68,bParm2); } while (iVar1 == 0); uVar3 = 1; LAB_0000f6c8: fclose(__stream); /* iVar1 = *local_68[0]; *local_68[0] = iVar1 + -1; if (iVar1 + -1 == 0) { if (local_68[0] == piRam000249ac) { piRam000249ac = (int *)0x0; } deleteSelf(); }*/ ~QTextStream(aQStack96); } unlink("/tmp/.CAM_PROC_TMP.pid"); /* iVar1 = *local_30[0]; *local_30[0] = iVar1 + -1; if (iVar1 + -1 == 0) { if (local_30[0] == piRam000249ac) { piRam000249ac = (int *)0x0; } deleteSelf(); }*/ return uVar3; } void FUN_0000f760(int iParm1) { int iVar1; int iVar2; int *local_18 [2]; iVar1 = UTIL_GetIncomingCallStatus(); if ((iVar1 == 0) && (iVar1 = UTIL_GetPhoneInCall(), iVar1 == 0)) { QString((QString *)local_18,"voicenote"); iVar1 = FUN_0000f5c4(iParm1,local_18); // получения пид какого-то процесса /* iVar2 = *local_18[0]; *local_18[0] = iVar2 + -1; if (iVar2 + -1 == 0) { if (local_18[0] == piRam000249ac) { piRam000249ac = (int *)0x0; } deleteSelf(); }*/ if (iVar1 == 0) { *(undefined *)(*(int *)(*(int *)(iParm1 + 0xac) + 4) + 0xf6) = 0; iVar1 = UTIL_GetFlipStatus(); a_isRunCLI = iVar1 == 1; updateView(); } } return; } void FUN_0000f828(void) // void slotFlipOpenDelay() { FUN_0000e2bc(8,"~~~~~~~~~deferred flip Open\n"); // print to log camManager(); // libezxcameraengine.so engineInterface(); // libezxcamera.so FUN_00013610(); // void stopEncoderForPhoto() updateView(); return; } void FUN_0000f95c(undefined4 uParm1,int iParm2) // ???void showMyMedia() { int *piVar1; int iVar2; int *local_30 [2]; int *local_28 [2]; AM_ActionData aAStack32 [12]; FUN_0000e2bc(8,"showMyMedia"); // print to log AM_ActionData(aAStack32); QString((QString *)local_28,"ViewMediaInMediaFinder"); setAction((QString *)aAStack32); /* iVar2 = *local_28[0]; *local_28[0] = iVar2 + -1; if (iVar2 + -1 == 0) { if (local_28[0] == piRam000249ac) { piRam000249ac = (int *)0x0; } deleteSelf(); }*/ if (iParm2 == 0) { QString((QString *)local_30,"ScreenName"); QString((QString *)local_28,"Video"); setValue((QString *)aAStack32,(QString *)local_30); /* iVar2 = *local_28[0]; *local_28[0] = iVar2 + -1; piVar1 = local_30[0]; if (iVar2 + -1 == 0) { if (local_28[0] == piRam000249ac) { piRam000249ac = (int *)0x0; } deleteSelf(); piVar1 = local_30[0]; }*/ } else { QString((QString *)local_28,"ScreenName"); QString((QString *)local_30,"Picture"); setValue((QString *)aAStack32,(QString *)local_28); /* iVar2 = *local_30[0]; *local_30[0] = iVar2 + -1; piVar1 = local_28[0]; if (iVar2 + -1 == 0) { if (local_30[0] == piRam000249ac) { piRam000249ac = (int *)0x0; } deleteSelf(); piVar1 = local_28[0]; }*/ } /* iVar2 = *piVar1; *piVar1 = iVar2 + -1; if (iVar2 + -1 == 0) { if (piVar1 == piRam000249ac) { piRam000249ac = (int *)0x0; } deleteSelf(); }*/ invoke(); ~AM_ActionData(aAStack32); return; } undefined ** FUN_0000faf4(undefined **ppuParm1) undefined ** FUN_0000fbc8(undefined **ppuParm1) // ~CAM_UI_App() // send chanell CAMERA_CLOSED_SIG undefined ** FUN_0000fc94(undefined **ppuParm1) { undefined **local_30 [2]; undefined **local_28 [3]; ppuParm1[0xf] = (undefined *)0x1a5e8; *(undefined ***)ppuParm1 = &PTR_FUN_0001a538; FUN_0000e2bc(8,"Entering function %s\n","~CAM_UI_App"); // print to log cleanup(); QCString((QCString *)local_28,"AM_APP_CLOSURE_UPDATE_CHANNEL"); QCString((QCString *)local_30,"CAMERA_CLOSED_SIG"); send((QCString *)local_28,(QCString *)local_30); local_30[0] = &PTR_~QArray_00019a98; ~QGArray((QGArray *)local_30); local_28[0] = &PTR_~QArray_00019a98; ~QGArray((QGArray *)local_28); FUN_0000e2bc(8,"Exiting function %s\n","~CAM_UI_App"); // print to log ~CAM_UI_Manager((CAM_UI_Manager *)(ppuParm1 + 0xf)); ~ZApplication((ZApplication *)ppuParm1); operator.delete(ppuParm1); return ppuParm1; } void FUN_0000fd60(int *piParm1,int iParm2,QGArray *pQParm3) // void slotHotPlugUpdateMainWindow(const QCString&,const QByteArray&) { int iVar1; QDataStream *this; undefined4 uVar2; int *piVar3; int iVar4; int local_4c; int local_48; int local_44; undefined **local_40 [2]; QDataStream aQStack56 [28]; FUN_0000e2bc(8,"Entering function %s\n","slotHotPlugUpdateMainWindow"); // print to log iVar4 = *(int *)(iParm2 + 4); if (*(char **)(iVar4 + 4) == (char *)0x0) { iVar1 = -0x1a000; } else { iVar1 = strcmp("cardHotplugEvent(int,int)",*(char **)(iVar4 + 4)); } if (iVar1 == 0) { QGArray((QGArray *)local_40,pQParm3); local_40[0] = &PTR_~QArray_00019a98; QDataStream(aQStack56,(QArray)local_40,1); local_40[0] = &PTR_~QArray_00019a98; ~QGArray((QGArray *)local_40); this = (QDataStream *)operator>>(aQStack56,&local_44); operator>>(this,&local_48); if (((local_44 == 0) && (local_48 == 0)) && (iVar4 = globalModel(), *(int *)(iVar4 + 0x90) == 1) ) { camManager(); // libezxcameraengine.so engineInterface(); // libezxcamera.so FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() piVar3 = (int *)videoCtl(); iVar4 = (**(code **)(*piVar3 + 0x30))(); if (iVar4 != 0) { (**(code **)(*piParm1 + 0x54))(piParm1); ~QDataStream(aQStack56); return; } } ~QDataStream(aQStack56); iVar4 = *(int *)(iParm2 + 4); } if ((*(char **)(iVar4 + 4) == (char *)0x0) || (iVar4 = strcmp(*(char **)(iVar4 + 4),"MmcsdShmUpdate(int)"), iVar4 != 0)) goto LAB_0000fdc4; QGArray((QGArray *)local_40,pQParm3); local_40[0] = &PTR_~QArray_00019a98; QDataStream(aQStack56,(QArray)local_40,1); local_40[0] = &PTR_~QArray_00019a98; ~QGArray((QGArray *)local_40); operator>>(aQStack56,&local_4c); FUN_0000e2bc(8,"MmcsdShmUpdate(%d)"); // print to log switch(local_4c) { case 1: iVar4 = isMemoryCardExist(); if (((iVar4 != 0) && (iVar4 = isMemoryCardlocked(), iVar4 == 0)) && (iVar4 = isMemoryCardwrite_protected(), iVar4 == 0)) goto LAB_0000ff98; break; case 2: camManager(); // libezxcameraengine.so iVar4 = globalModel(); setStorageLocation(iVar4 + 0x24); camManager(); // libezxcameraengine.so globalModel(); SDCardPulledOut(); goto LAB_0000ff54; case 3: camManager(); // libezxcameraengine.so globalModel(); m_usbInsert = 1; camManager(); // libezxcameraengine.so iVar4 = globalModel(); setStorageLocation(iVar4 + 0x24); LAB_0000ff54: if (piParm1[0x2b] != 0) { piVar3 = *(int **)(piParm1[0x2b] + 4); uVar2 = 0; iVar4 = *piVar3; LAB_0000ff70: (**(code **)(iVar4 + 500))(piVar3,uVar2); } break; case 4: camManager(); // libezxcameraengine.so globalModel(); m_usbInsert = 0; LAB_0000ff98: camManager(); // libezxcameraengine.so iVar4 = globalModel(); setStorageLocation(iVar4 + 0x24); if (piParm1[0x2b] == 0) break; piVar3 = *(int **)(piParm1[0x2b] + 4); iVar4 = *piVar3; uVar2 = 3; goto LAB_0000ff70; } ~QDataStream(aQStack56); LAB_0000fdc4: FUN_0000e2bc(8,"Exiting function %s\n","slotHotPlugUpdateMainWindow"); // print to log return; } void FUN_000104cc(void) // void tshutdownACS() { char cVar1; key_t __key; int __msqid; int *piVar2; char *local_22c; int iVar3; char *__format; char *pcVar4; undefined4 local_230; bool bVar5; undefined4 local_228; char *local_224; __format = "CAM_Main.cpp"; cVar1 = 'C'; bVar5 = true; pcVar4 = __format; while (bVar5) { if (cVar1 == '/') { pcVar4 = __format + 1; } __format = __format + 1; cVar1 = *__format; bVar5 = cVar1 != 0; } fprintf(stderr,"{%d} %s:%d\t#ACS# ENTER\tshutdownACS()\n",1,pcVar4,0x9d); __key = ftok("/usr/bin/apps_acs",0xffe1); __msqid = msgget(__key,0x3b6); if (__msqid == -1) { cVar1 = 'C'; __format = "CAM_Main.cpp"; bVar5 = true; pcVar4 = __format; while (bVar5) { if (cVar1 == '/') { pcVar4 = __format + 1; } __format = __format + 1; cVar1 = *__format; bVar5 = cVar1 != 0; } piVar2 = __errno_location(); local_22c = strerror(*piVar2); __format = "{%d} %s:%d\t#ACS# ERROR\tshutdownACS() - Message send failed Error(Couldn\'t get msgque): %s\n" ; local_230 = 0xa3; } else { local_228 = 2; local_224 = (char *)0x2906; iVar3 = msgsnd(__msqid,&local_228,4,0); if (iVar3 == -1) { cVar1 = 'C'; __format = "CAM_Main.cpp"; bVar5 = true; pcVar4 = __format; while (bVar5) { if (cVar1 == '/') { pcVar4 = __format + 1; } __format = __format + 1; cVar1 = *__format; bVar5 = cVar1 != 0; } piVar2 = __errno_location(); local_22c = strerror(*piVar2); __format = "{%d} %s:%d\t#ACS# CRITICAL\tshutdownACS() - Message send failed Error(No msg queue exists):%s\n" ; local_230 = 0xac; } else { __format = "CAM_Main.cpp"; cVar1 = 'C'; bVar5 = true; pcVar4 = __format; while (bVar5) { if (cVar1 == '/') { pcVar4 = __format + 1; } __format = __format + 1; cVar1 = *__format; bVar5 = cVar1 != 0; } fprintf(stderr,"{%d} %s:%d\t#ACS# DEBUG\tshutdownACS() - Message sent [%d]\n",1,pcVar4,0xaf, local_224); local_228 = 1; local_224 = (char *)0x290b; __msqid = msgsnd(__msqid,&local_228,4,0); if (__msqid == -1) { cVar1 = 'C'; __format = "CAM_Main.cpp"; bVar5 = true; pcVar4 = __format; while (bVar5) { if (cVar1 == '/') { pcVar4 = __format + 1; } __format = __format + 1; cVar1 = *__format; bVar5 = cVar1 != 0; } piVar2 = __errno_location(); local_22c = strerror(*piVar2); __format = "{%d} %s:%d\t#ACS# CRITICAL\tshutdownACS() - Message send failed Error(No msg queueexists): %s\n" ; local_230 = 0xb6; } else { __format = "CAM_Main.cpp"; cVar1 = 'C'; bVar5 = true; pcVar4 = __format; while (bVar5) { if (cVar1 == '/') { pcVar4 = __format + 1; } __format = __format + 1; cVar1 = *__format; bVar5 = cVar1 != 0; } local_22c = local_224; fprintf(stderr,"{%d} %s:%d\t#ACS# DEBUG\tshutdownACS() - Message sent [%d]\n",1,pcVar4,0xb9, local_224); cVar1 = 'C'; __format = "CAM_Main.cpp"; bVar5 = true; pcVar4 = __format; while (bVar5) { if (cVar1 == '/') { pcVar4 = __format + 1; } __format = __format + 1; cVar1 = *__format; bVar5 = cVar1 != 0; } __format = "{%d} %s:%d\t#ACS# LEAVE\tshutdownACS()\n"; local_230 = 0xbb; } } } fprintf(stderr,__format,1,pcVar4,local_230,local_22c); return; } undefined4 FUN_000107ec(int iParm1,char **ppcParm2) // ?? start // main function entrance { int iVar1; int *this; QObject *pQVar2; __sighandler_t pVar3; undefined4 uVar4; uint uVar5; int local_17c; QObject aQStack376 [264]; AM_ActionParser aAStack112 [8]; int *local_68 [2]; int *local_60 [2]; ZApplication aZStack88 [64]; local_17c = iParm1; TimeTrace("main function entrance"); iVar1 = getFreeMemory(); if (iVar1 < 0xc00) { // если нет свободной Оп памяти debug("CAM_Main.cpp","main",0x51,0,"\nCameraMain: Memory is too low to launch camera!\n"); ZApplication(aZStack88,&local_17c,ppcParm2,1); tr((char *)local_60,"TXT_RID_HEADER_INSUFFICIENT_MEMORY"); QString((QString *)local_68,""); this = (int *)operator.new(0xc4); ZMessageDlg((ZMessageDlg *)this,(QString *)local_60,(QString *)local_68,2,0,(QWidget *)0x0, (char *)0x0,true,0); /* iVar1 = *local_68[0]; *local_68[0] = iVar1 + -1; if (iVar1 + -1 == 0) { if (local_68[0] == piRam000249ac) { piRam000249ac = (int *)0x0; } deleteSelf(); } iVar1 = *local_60[0]; *local_60[0] = iVar1 + -1; if (iVar1 + -1 == 0) { if (local_60[0] == piRam000249ac) { piRam000249ac = (int *)0x0; } deleteSelf(); }*/ tr((char *)local_68,"TXT_RID_INSTRUCTIONALTXT_THERE_IS_INSUFFICIENT_PHONE_MEMORY"); setInstructText((QString *)this); /* iVar1 = *local_68[0]; *local_68[0] = iVar1 + -1; if (iVar1 + -1 == 0) { if (local_68[0] == piRam000249ac) { piRam000249ac = (int *)0x0; } deleteSelf(); }*/ exec(); if (this != (int *)0x0) { (**(code **)(*this + 4))(this); } FUN_000104cc(); // void tshutdownACS() } else { // есть свободная память, продолжаем iVar1 = UTIL_GetIncomingCallStatus(); if (iVar1 == 0) { // если нет входящих звонков pa_open("/tmp/camera_start_time_pa_log"); uVar5 = 1; if (local_17c == 2) { iVar1 = strcmp(ppcParm2[1],"-v"); uVar5 = (uint)(iVar1 != 0); } pa_step("application object get the action command from am"); // объект приложения получить команду действия от AM AM_ActionParser(aAStack112); iVar1 = action(); if (iVar1 != 0) { action(); action(); iVar1 = operator==((QString *)local_68,"TakingPhoto"); if (iVar1 == 0) { iVar1 = operator==((QString *)local_68,"RecordingVideo"); if (iVar1 != 0) { uVar5 = 0; } } else { uVar5 = 1; } /* iVar1 = *local_68[0]; *local_68[0] = iVar1 + -1; if (iVar1 + -1 == 0) { if (local_68[0] == piRam000249ac) { piRam000249ac = (int *)0x0; } deleteSelf(); }*/ } FUN_0000e820(aQStack376,uVar5,&local_17c,ppcParm2,1);// создание обьекта приложения pQVar2 = (QObject *)instance(); connect(pQVar2,"2receiveAction(const AM_ActionData&)",aQStack376, "1handleAction(const AM_ActionData&)"); pa_step("application object created"); pVar3 = signal(0xf,(__sighandler_t)&LAB_00010464); if (pVar3 == (__sighandler_t)0xffffffff) { debug("CAM_Main.cpp","main",0x93,0,"~~~~~~~~~~~~~~~~install signal error\n"); } DAT_00024a00 = aQStack376; uVar4 = exec(); FUN_0000fbc8(aQStack376); // ~CAM_UI_App() // send chanell CAMERA_CLOSED_SIG ~AM_ActionParser(aAStack112); return uVar4; } // если есть входящие звонки, продолжаем отсда debug("CAM_Main.cpp","main",99,0,"phone call is connecting. ............"); ZApplication(aZStack88,&local_17c,ppcParm2,1); showPhoneCallConflictMsgbox(); FUN_000104cc(); // void tshutdownACS() } ~ZApplication(aZStack88); return 0; } /// *********************************** class CAM_UI_App *********************************** /// /// **** chameleon/CAM_UI_App.cpp **** /// char * FUN_00010f18(char *pcParm1) char * FUN_00010f58(char *pcParm1) // translate { translate(pcParm1,qApp,"CAM_UI_App"); return pcParm1; } Access * FUN_00010f94(void) // подключаемые слоты { char **ppcVar1; undefined4 *puVar2; if (DAT_00024a08 == (Access *)0x0) { staticMetaObject(); ppcVar1 = (char **)new_metadata(0xc); puVar2 = (undefined4 *)new_metaaccess(0xc); *ppcVar1 = "slotCheckACSRunning()"; *(code **)(ppcVar1 + 1) = FUN_0000ecf0; // void slotCheckACSRunning() // msg The Camera is Busy ppcVar1[2] = (char *)0x0; *puVar2 = 1; ppcVar1[3] = "slotReturnToIdle(int)"; // // void slotReturnToIdle() ppcVar1[4] = (char *)0x6c; ppcVar1[5] = (char *)0x1; ppcVar1[6] = "slotQuickQuit()"; // void slotQuickQuit() puVar2[1] = 1; ppcVar1[7] = (char *)0x54; ppcVar1[8] = (char *)0x1; puVar2[2] = 1; ppcVar1[9] = "slotFlipOpenDelay()"; *(code **)(ppcVar1 + 10) = FUN_0000f828; // void slotFlipOpenDelay() ppcVar1[0xb] = (char *)0x0; puVar2[3] = 1; ppcVar1[0xc] = "timeoutQuitSlot()"; *(code **)(ppcVar1 + 0xd) = FUN_0000f24c // int timeoutQuitSlot() ppcVar1[0xe] = (char *)0x0; puVar2[4] = 1; ppcVar1[0xf] = "restartTimerSlot()"; *(code **)(ppcVar1 + 0x10) = FUN_0000f2e0; // void restartTimerSlot() ppcVar1[0x11] = (char *)0x0; puVar2[5] = 1; ppcVar1[0x12] = "handleAction(AM_ActionData)"; *(code **)(ppcVar1 + 0x13) = FUN_0000f520; // void handleAction(AM_ActionData) ppcVar1[0x14] = (char *)0x0; puVar2[6] = 1; ppcVar1[0x15] = "checkViewfinderSlot()"; // checkViewfinderSlot ppcVar1[0x16] = &LAB_0000f370; ppcVar1[0x17] = (char *)0x0; puVar2[7] = 1; ppcVar1[0x18] = "switchViewSlot()"; *(code **)(ppcVar1 + 0x19) = FUN_0000f3ac; // void switchViewSlot() ppcVar1[0x1a] = (char *)0x0; puVar2[8] = 1; ppcVar1[0x1b] = "flipStatusChanged(int)"; ppcVar1[0x1c] = &LAB_0000f858; ppcVar1[0x1d] = (char *)0x0; puVar2[9] = 1; ppcVar1[0x1e] = "sliderStatusChanged(int)"; ppcVar1[0x1f] = &LAB_0000f894; ppcVar1[0x20] = (char *)0x0; puVar2[10] = 1; ppcVar1[0x21] = "slotHotPlugUpdateMainWindow(const QCString&,const QByteArray&)"; *(code **)(ppcVar1 + 0x22) = FUN_0000fd60; // void slotHotPlugUpdateMainWindow(const QCString&,const QByteArray&) ppcVar1[0x23] = (char *)0x0; puVar2[0xb] = 1; DAT_00024a08 = (Access *) new_metaobject("CAM_UI_App","ZApplication",(QMetaData *)ppcVar1,0xc, (QMetaData *)0x0,0,(QClassInfo *)0x0,0); set_slot_access(DAT_00024a08); } return DAT_00024a08; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_000117a0(int iParm1,char *pcParm2,undefined4 uParm3,undefined4 uParm4) // vfprintf log { undefined4 uStack8; undefined4 uStack4; if (iParm1 < 8) { if (_DAT_00049360 == (FILE *)0x0) { uStack8 = uParm3; uStack4 = uParm4; vfprintf(_DAT_00049330,pcParm2,&uStack8); } else { uStack8 = uParm3; uStack4 = uParm4; vfprintf(_DAT_00049360,pcParm2,&uStack8); } } return; } undefined4 FUN_0001181c(void) // return 0x1c20 { return 0x1c20; } /// *********************************** class CAM_UI_EngineInterface *********************************** /// /// **** src/CAM_UI_EngineInterface.cpp **** /// /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ // начало класса CAM_UI_EngineInterface // CAM_UI_EngineInterface::CAM_UI_EngineInterface(undefined4 *param_1,undefined4 param_2,undefined4 param_3,QObject *param_4, undefined param_5,undefined param_6) undefined4 * FUN_00011a90(undefined4 *param_1,undefined4 param_2,undefined4 param_3,QObject *param_4, undefined param_5,undefined param_6) undefined4 * FUN_00011828(undefined4 *param_1,undefined4 param_2,undefined4 param_3,QObject *param_4, undefined param_5,undefined param_6) { int *piVar1; undefined4 uVar2; QTimer *this; int iVar3; QObject *pQVar4; int *piVar5; bool bVar6; QObject((QObject *)param_1,param_4,(char *)0x0); *param_1 = 0x49208; *(undefined *)((int)param_1 + 0x2f) = param_5; *(undefined *)((int)param_1 + 0x31) = param_6; *(undefined *)(param_1 + 0xc) = 0; QString((QString *)(param_1 + 0x17),""); QString((QString *)(param_1 + 0x18),""); piVar1 = _DAT_00049358; if (_DAT_00049358 == (int *)0x0) { piVar1 = (int *)makeSharedNull(); } piVar5 = _DAT_00049358; bVar6 = _DAT_00049358 == (int *)0x0; *piVar1 = *piVar1 + 1; *(int **)(param_1 + 0x19) = piVar1; if (bVar6) { piVar5 = (int *)makeSharedNull(); } *piVar5 = *piVar5 + 1; param_1[0x4a] = 0xffffffff; param_1[0x49] = 0xffffffff; param_1[0x4b] = param_2; param_1[0x4c] = param_3; *(int **)(param_1 + 0x1a) = piVar5; param_1[0x4f] = 0xffffffff; param_1[0x4e] = 0xffffffff; param_1[0x4d] = 0xffffffff; param_1[0x50] = 0xffffffff; param_1[0x46] = 1; param_1[0x44] = 0; *(undefined *)(param_1 + 0x54) = 0; FUN_000117a0(8,"Entering function %s\n","CAM_UI_EngineInterface"); // vfprintf log *(undefined *)((int)param_1 + 0x2d) = 1; *(undefined *)(param_1 + 0xc) = 1; *(undefined *)((int)param_1 + 0x32) = 1; param_1[10] = 0; param_1[9] = 0; param_1[0x1e] = 0; param_1[0x1f] = 0; param_1[0x20] = 0; *(undefined *)((int)param_1 + 0x2e) = 0; param_1[0x51] = 0; param_1[0x52] = 0; param_1[0x53] = 0; *(undefined *)((int)param_1 + 0x33) = 0; operator=((QString *)(param_1 + 0x19),""); operator=((QString *)(param_1 + 0x1a),""); *(undefined *)((int)param_1 + 0x35) = 1; *(undefined *)(param_1 + 0xd) = 1; param_1[0x1b] = 0; param_1[0x1c] = 0; *(undefined *)((int)param_1 + 0x36) = 0; *(undefined *)((int)param_1 + 0x37) = 0; param_1[0x1d] = 0; uVar2 = FUN_0001181c(param_1); // return 0x1c20 param_1[0x16] = 0; param_1[0x14] = uVar2; param_1[0x15] = 0; param_1[0x11] = 0; param_1[0x13] = 0; param_1[0x12] = 0; param_1[0x22] = 0; this = (QTimer *)operator.new(0x2c); QTimer(this,(QObject *)param_1,(char *)0x0); *(QTimer **)(param_1 + 0x55) = this; connect((QObject *)this,"2timeout()",(QObject *)param_1,"1captureTimeoutSlot()"); // void captureTimeoutSlot() iVar3 = camManager(); // libezxcameraengine.so pQVar4 = *(QObject **)(iVar3 + 0xb4); if (pQVar4 != (QObject *)0x0) { FUN_00017660(pQVar4,param_1); // CAM_UI_ACS_MessageListener::addEventHandler connect(pQVar4,"2handleACSEvent(int)",(QObject *)param_1,"1acsEvent(int)"); // ???acsEvent(int) } FUN_000117a0(8,"Exiting function %s\n","CAM_UI_EngineInterface"); // vfprintf log return param_1; } undefined8 FUN_00011cf8(int iParm1) // close the camera engine { undefined4 extraout_r1; CAM_Engine *this; undefined8 uVar1; if (*(int *)(iParm1 + 0x28) == 0) { return 0x80001aa3c; } FUN_000117a0(); // vfprintf log uVar1 = close(); this = *(CAM_Engine **)(iParm1 + 0x28); if (this != (CAM_Engine *)0x0) { ~CAM_Engine(this); operator.delete(this); uVar1 = CONCAT44(this,extraout_r1); } *(undefined4 *)(iParm1 + 0x28) = 0; return uVar1; } void FUN_00011d60(undefined4 uParm1) // close the camera engine c журналом-логом vfprintf { FUN_000117a0(8,"close the camera engine"); // vfprintf log FUN_00011cf8(uParm1); // close the camera engine return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ uint FUN_00011d9c(int iParm1) // void getSecsVideoCanRec() { uint uVar1; uint uVar2; int iVar3; char *pcVar4; int iVar5; uint uVar6; int *local_30 [2]; int *local_28 [3]; uVar6 = 0xffffffff; FUN_000117a0(8,"Enter the getSecsVideoCanRec"); // vfprintf log camManager(); // libezxcameraengine.so globalModel(); uVar1 = videoDuration(); if (((*(char *)(iParm1 + 0x2f) != 0) || ((int)uVar1 < 0)) || (uVar2 = FUN_0001181c(iParm1), uVar2 < uVar1)) { uVar1 = FUN_0001181c(iParm1); // return 0x1c20 } if (*(char *)(iParm1 + 0x2f) != 0) { uVar6 = *(uint *)(iParm1 + 0x40); } camManager(); // libezxcameraengine.so iVar3 = globalModel(); QString((QString *)local_28,(QString *)(iVar3 + 0x9c)); pcVar4 = (char *)latin1(); uVar2 = getFreeDiskSpace(pcVar4); if (uVar2 < uVar6) { camManager(); // libezxcameraengine.so iVar3 = globalModel(); QString((QString *)local_30,(QString *)(iVar3 + 0x9c)); pcVar4 = (char *)latin1(); /* uVar6 = getFreeDiskSpace(pcVar4); iVar3 = *local_30[0]; *local_30[0] = iVar3 + -1; if (iVar3 + -1 == 0) { if (local_30[0] == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); }*/ } /* iVar3 = *local_28[0]; *local_28[0] = iVar3 + -1; if (iVar3 + -1 == 0) { if (local_28[0] == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); }*/ FUN_000117a0(8,"Free diskspace in target folder %u",uVar6); // vfprintf log camManager(); // libezxcameraengine.so iVar3 = globalModel(); iVar5 = *(int *)(iVar3 + 0x108); camManager(); // libezxcameraengine.so iVar3 = globalModel(); iVar3 = getVideoBitRate(*(int *)(iVar3 + 0x10c),iVar5); FUN_000117a0(8,"Estimated video bit rate %u",iVar3); // vfprintf log uVar2 = reevaluateBitRate(iVar3); FUN_000117a0(8,"Estimated video bit rate including audio %u",uVar2); // vfprintf log iVar3 = __aeabi_uidiv(uVar6,uVar2 >> 3); iVar5 = get3GPMetaDataSize(iVar3,0xf,0x1a,true); iVar3 = __aeabi_uidiv(iVar5 << 3,iVar3); uVar6 = __aeabi_uidiv(uVar6,uVar2 + iVar3 >> 3); if (uVar1 <= uVar6) { uVar6 = uVar1; } FUN_000117a0(7,"getSecsVideoCanRec() Estimated video, audio and 3gp bitrate %u, seconds available" ,uVar2 + iVar3,uVar6); // vfprintf log if ((int)uVar6 < 0) { uVar6 = 0x7fffffff; } *(uint *)(iParm1 + 0x50) = uVar6; return uVar6; } void FUN_00011fd4(int iParm1,QString *pQParm2) { operator=((QString *)(iParm1 + 0x60),pQParm2); operator=((QString *)(iParm1 + 0x5c),(QString *)(iParm1 + 0x60)); return; } void FUN_00012004(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5, undefined4 param_6,char param_7) { CAM_Rotation CVar1; int *piVar2; int iVar3; FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() *(char *)(param_1 + 0x31) = param_7; if (param_2 == 2 || param_2 == 0) { *(undefined4 *)(param_1 + 300) = param_3; *(undefined4 *)(param_1 + 0x130) = param_4; piVar2 = (int *)photoCtl(); (**(code **)(*piVar2 + 0xc))(piVar2,param_4,param_3); if (param_7 == 0) { CVar1 = photoCtl(); setRotation(CVar1); iVar3 = -0x9794; } else { CVar1 = photoCtl(); setRotation(CVar1); iVar3 = -0x9778; } FUN_000117a0(8,(int)&__DT_PLTGOT + iVar3); // vfprintf log } if (param_2 == 3 || param_2 == 0) { *(undefined4 *)(param_1 + 0x13c) = param_5; *(undefined4 *)(param_1 + 0x140) = param_6; if (param_7 == 0) { piVar2 = (int *)videoCtl(); (**(code **)(*piVar2 + 0xc))(piVar2,param_5,param_6); CVar1 = videoCtl(); setRotation(CVar1); iVar3 = -0x97d8; } else { piVar2 = (int *)videoCtl(); (**(code **)(*piVar2 + 0xc))(piVar2,param_5,param_6); CVar1 = videoCtl(); setRotation(CVar1); iVar3 = -0x97b8; } FUN_000117a0(8,(int)&__DT_PLTGOT + iVar3); // vfprintf log } return; } void FUN_00012164(int param_1,uint param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5, undefined4 param_6,undefined4 param_7,undefined4 param_8,byte param_9) { int iVar1; int iVar2; CAM_Rotation CVar3; int iVar4; FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() configCtl(); iVar1 = getDeviceRotation(); if (param_2 < 2) { *(undefined4 *)(param_1 + 0x134) = param_3; *(undefined4 *)(param_1 + 0x138) = param_4; iVar4 = *(int *)(param_1 + 0x134); iVar2 = viewfinderCtl(); setSize(iVar2,iVar4); configCtl(); getDeviceRotation(); CVar3 = viewfinderCtl(); setRotation(CVar3); FUN_000117a0(8,"set viewfinderctl rotation 90"); // vfprintf log if (param_2 == 1) { return; } } if (iVar1 == 2) { FUN_00012004(param_1,param_2,param_5,param_6,param_7,param_8,(uint)param_9); } return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ int FUN_00012264(int iParm1) // CAM_UI_EngineInterface::cameraEngine() { char cVar1; int iVar2; CAM_LightFrequency CVar3; int *piVar4; CAM_Engine *this; char *pcVar5; char *pcVar6; iVar2 = *(int *)(iParm1 + 0x28); if (iVar2 == 0) { if (DAT_00049338 == 0) { cVar1 = 's'; pcVar5 = "src/CAM_UI_EngineInterface.cpp"; pcVar6 = pcVar5; do { if (cVar1 == '/') { pcVar6 = pcVar5 + 1; } pcVar5 = pcVar5 + 1; cVar1 = *pcVar5; } while (cVar1 != 0); fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_EngineInterface::cameraEngine() - new CAM_Enginemain\n" ,1,pcVar6,0x116); piVar4 = (int *)camManager(); // libezxcameraengine.so iVar2 = (**(code **)(*piVar4 + 8))(); if (iVar2 == 0) { this = (CAM_Engine *)operator.new(0x158); CAM_Engine(this,0,0,1); iVar2 = -0x963c; *(CAM_Engine **)(iParm1 + 0x28) = this; } else { this = (CAM_Engine *)operator.new(0x158); CAM_Engine(this,0,0,2); iVar2 = -0x95d4; *(CAM_Engine **)(iParm1 + 0x28) = this; } } else { cVar1 = 's'; pcVar5 = "src/CAM_UI_EngineInterface.cpp"; pcVar6 = pcVar5; do { if (cVar1 == '/') { pcVar6 = pcVar5 + 1; } pcVar5 = pcVar5 + 1; cVar1 = *pcVar5; } while (cVar1 != 0); fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_EngineInterface::cameraEngine() - new CAM_Engineflip close\n" ,1,pcVar6,0x108); piVar4 = (int *)camManager(); // libezxcameraengine.so iVar2 = (**(code **)(*piVar4 + 8))(); if (iVar2 == 0) { this = (CAM_Engine *)operator.new(0x158); CAM_Engine(this,1,0,1); *(CAM_Engine **)(iParm1 + 0x28) = this; iVar2 = -0x96bc; } else { this = (CAM_Engine *)operator.new(0x158); CAM_Engine(this,1,0,2); iVar2 = -0x95f8; *(CAM_Engine **)(iParm1 + 0x28) = this; } } FUN_000117a0(8,(int)&__DT_PLTGOT + iVar2); // vfprintf log FUN_000117a0(8,"create engine!"); // vfprintf log DAT_00024a58 = iParm1; setUserCallback(*(CAM_Result (**)(CAM_Callback_T *))(iParm1 + 0x28),(undefined *)0x29488); CVar3 = configCtl(); iVar2 = setLightFrequency(CVar3); if (iVar2 != 0) { FUN_000117a0(8,"set light frequency error! return value=0x%x",iVar2); // vfprintf log } FUN_00012164(iParm1,2,*(undefined4 *)(iParm1 + 0x134),*(undefined4 *)(iParm1 + 0x138), *(undefined4 *)(iParm1 + 300),*(undefined4 *)(iParm1 + 0x130), *(undefined4 *)(iParm1 + 0x13c),*(undefined4 *)(iParm1 + 0x140), (uint)*(byte *)(iParm1 + 0x31)); iVar2 = *(int *)(iParm1 + 0x28); } return iVar2; } void FUN_000125b4(int iParm1) // void resumeViewfinder() { int *piVar1; if (*(char *)(iParm1 + 0x2e) != 0) { *(undefined *)(iParm1 + 0x2e) = 0; FUN_000117a0(8,"keep camera started"); // vfprintf log return; } FUN_000117a0(8,"pause viewfinder"); // vfprintf log FUN_000117a0(8,"Entering function %s\n","resumeViewfinder"); // vfprintf log FUN_00012264(iParm1); // CAM_UI_EngineInterface::cameraEngine() piVar1 = (int *)viewfinderCtl(); (**(code **)(*piVar1 + 0x10))(); FUN_000117a0(8,"viewfinder paused"); // vfprintf log FUN_000117a0(8,"Exiting function %s\n","resumeViewfinder"); // vfprintf log return; } void FUN_0001261c(int iParm1,int iParm2,int iParm3) { char *pcVar1; FUN_000117a0(8,"pausePreivew frame = %d, currentFrame = %d",iParm2,*(undefined4 *)(iParm1 + 0x114)); // vfprintf log pcVar1 = "not the current frame"; if (iParm2 == *(int *)(iParm1 + 0x114)) { if (iParm3 != 0) { FUN_000125b4(iParm1,"not the current frame"); // void resumeViewfinder() } pcVar1 = "leave pausePreview"; } FUN_000117a0(8,pcVar1); // vfprintf log return; } void FUN_000127b0(undefined4 uParm1,int iParm2) // void setVideoMute() { FUN_000117a0(8,"Entering function %s\n","setVideoMute"); // vfprintf log if (iParm2 == 0) { FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() videoCtl(); unmute(); } else { FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() videoCtl(); mute(); } FUN_000117a0(8,"Exiting function %s\n","setVideoMute"); // vfprintf log return; } void FUN_00012838(undefined4 uParm1) // void unloadRecSetting() { int *piVar1; int iVar2; FUN_000117a0(8,"Entering function %s\n","unloadRecSetting"); // vfprintf log FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() piVar1 = (int *)viewfinderCtl(); iVar2 = (**(code **)(*piVar1 + 0x1c))(); if (iVar2 != 0) { FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() iVar2 = videoCtl(); if (*(char *)(iVar2 + 0x43) != 0) { videoCtl(); unload(); } } FUN_000117a0(8,"Exiting function %s\n","unloadRecSetting"); // vfprintf log return; } void FUN_000128e0(undefined4 uParm1) // void unloadCapSetting() { int *piVar1; int iVar2; FUN_000117a0(8,"Entering function %s\n","unloadCapSetting"); // vfprintf log FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() piVar1 = (int *)viewfinderCtl(); iVar2 = (**(code **)(*piVar1 + 0x1c))(); if (iVar2 != 0) { FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() iVar2 = photoCtl(); if (*(char *)(iVar2 + 0x60) != 0) { photoCtl(); unload(); } } FUN_000117a0(8,"Exiting function %s\n","unloadCapSetting"); // vfprintf log return; } void FUN_00012988(int param_1,undefined4 param_2,undefined4 param_3,int param_4,byte param_5) // ???asyncStartPreview { int *piVar1; int iVar2; undefined4 uVar3; char *pcVar4; *(undefined4 *)(param_1 + 0x124) = param_2; *(undefined4 *)(param_1 + 0x128) = param_3; FUN_000117a0(8,"asyncStartPreview frame = %d, currentFrame = %d",param_4, *(undefined4 *)(param_1 + 0x114)); // vfprintf log pcVar4 = "flip is close"; if ((DAT_00049338 == 0) && (pcVar4 = "not the current frame", param_4 == *(int *)(param_1 + 0x114))) { FUN_00012264(param_1,"not the current frame"); // CAM_UI_EngineInterface::cameraEngine() piVar1 = (int *)viewfinderCtl(); iVar2 = (**(code **)(*piVar1 + 0x1c))(); if (iVar2 == 0) { FUN_000117a0(8,"ansyn start viewfinder"); // vfprintf log FUN_00012264(param_1); // CAM_UI_EngineInterface::cameraEngine() FUN_00012164(param_1,1,*(undefined4 *)(param_1 + 0x124),*(undefined4 *)(param_1 + 0x128), *(undefined4 *)(param_1 + 300),*(undefined4 *)(param_1 + 0x130), *(undefined4 *)(param_1 + 0x13c),*(undefined4 *)(param_1 + 0x140),(uint)param_5); viewfinderCtl(); asyncStart(); viewfinderCtl(); uVar3 = getVirtualColorKey(); *(undefined4 *)(param_1 + 0x14c) = uVar3; } pcVar4 = "leave asynStartPreview"; } FUN_000117a0(8,pcVar4); // vfprintf log return; } undefined8 FUN_00012adc(void) // ... Disable setAlphaBlending // выкл альфа-смешение { int iVar1; undefined8 uVar2; FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() viewfinderCtl(); iVar1 = setAlphaBlendingDisable(); // выкл альфа-смешение if (iVar1 == 0) { return 0x80001ae94; } uVar2 = FUN_000117a0(); // vfprintf log return uVar2; } undefined8 FUN_00012b1c(void) // ... Enable setAlphaBlending // вкл альфа-смешение { int iVar1; undefined8 uVar2; FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() viewfinderCtl(); iVar1 = setAlphaBlendingEnable(); // вкл альфа-смешение if (iVar1 == 0) { return 0x80001aed8; } uVar2 = FUN_000117a0(); // vfprintf log return uVar2; } undefined8 FUN_00012b5c(void) // ... Disable setVirtualColorKey // выкл виртуальный цветовой ключ { int iVar1; undefined8 uVar2; FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() viewfinderCtl(); iVar1 = setVirtualColorKeyDisable(); // выкл виртуальный цветовой ключ if (iVar1 == 0) { return 0x80001af14; } uVar2 = FUN_000117a0(); // vfprintf log return uVar2; } undefined8 FUN_00012b9c(void) // ... Enable setVirtualColorKey // вкл виртуальный цветовой ключ { int iVar1; undefined8 uVar2; FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() viewfinderCtl(); iVar1 = setVirtualColorKeyEnable(); // вкл виртуальный цветовой ключ if (iVar1 == 0) { return 0x80001af54; } uVar2 = FUN_000117a0(); // vfprintf log return uVar2; } void FUN_00012bdc(int iParm1) // void pauseViewfinder() { int *piVar1; int iVar2; FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() piVar1 = (int *)viewfinderCtl(); iVar2 = (**(code **)(*piVar1 + 0x1c))(); if (iVar2 == 0) { return; } if (*(char *)(iParm1 + 0x2e) != 0) { *(undefined *)(iParm1 + 0x2e) = 0; FUN_000117a0(8,"keep camera started"); // vfprintf log return; } FUN_000117a0(8,"pause viewfinder"); // vfprintf log FUN_000117a0(8,"Entering function %s\n","pauseViewfinder"); // vfprintf log FUN_00012264(iParm1); // CAM_UI_EngineInterface::cameraEngine() piVar1 = (int *)viewfinderCtl(); (**(code **)(*piVar1 + 0xc))(); FUN_000117a0(8,"viewfinder paused"); // vfprintf log FUN_000117a0(8,"Exiting function %s\n","pauseViewfinder"); // vfprintf log return; } void FUN_00012c6c(int iParm1,int iParm2,int iParm3) { char *pcVar1; FUN_000117a0(8,"pausePreivew frame = %d, currentFrame = %d",iParm2,*(undefined4 *)(iParm1 + 0x114) ); // vfprintf log pcVar1 = "not the current frame"; if (iParm2 == *(int *)(iParm1 + 0x114)) { if (iParm3 != 0) { FUN_00012bdc(iParm1,"not the current frame"); // void pauseViewfinder() } pcVar1 = "leave pausePreview"; } FUN_000117a0(8,pcVar1); // vfprintf log return; } void FUN_00012cf8(int iParm1) // void stopViewfinder() { int *piVar1; int iVar2; FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() piVar1 = (int *)viewfinderCtl(); iVar2 = (**(code **)(*piVar1 + 0x1c))(); if (iVar2 == 0) { FUN_00012264(iParm1); // CAM_UI_EngineInterface::cameraEngine() piVar1 = (int *)viewfinderCtl(); iVar2 = (**(code **)(*piVar1 + 0x18))(); if (iVar2 == 0) { return; } } if (*(char *)(iParm1 + 0x2e) != 0) { *(undefined *)(iParm1 + 0x2e) = 0; FUN_000117a0(8,"keep camera started"); // vfprintf log return; } FUN_000117a0(8,"stop viewfinder"); // vfprintf log FUN_000117a0(8,"Entering function %s\n","stopViewfinder"); // vfprintf log FUN_00012264(iParm1); // CAM_UI_EngineInterface::cameraEngine() piVar1 = (int *)viewfinderCtl(); (**(code **)(*piVar1 + 0x14))(); FUN_000117a0(8,"viewfinder stopped"); // vfprintf log FUN_000117a0(8,"Exiting function %s\n","stopViewfinder"); // vfprintf log return; } void FUN_00012db0(int iParm1,int iParm2,int iParm3) { char *pcVar1; FUN_000117a0(8,"stopPreivew frame = %d, currentFrame = %d",iParm2,*(undefined4 *)(iParm1 + 0x114)) ; // vfprintf log pcVar1 = "not the current frame"; if (iParm2 == *(int *)(iParm1 + 0x114)) { if (iParm3 != 0) { FUN_00012cf8(iParm1,"not the current frame"); // void stopViewfinder() } pcVar1 = "leave stopPreview"; } FUN_000117a0(8,pcVar1); // vfprintf log return; } undefined4 FUN_00012e3c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,byte param_5) // void loadRecSetting() { int *piVar1; int iVar2; undefined4 uVar3; CAM_VideoType CVar4; FUN_000117a0(8,"Entering function %s\n","loadRecSetting"); // vfprintf log FUN_00012264(param_1); // CAM_UI_EngineInterface::cameraEngine() piVar1 = (int *)viewfinderCtl(); iVar2 = (**(code **)(*piVar1 + 0x1c))(); if (iVar2 == 0) { uVar3 = FUN_00012264(param_1); // CAM_UI_EngineInterface::cameraEngine() if (DAT_435b2051 == 0) { CVar4 = videoCtl(); } else { CVar4 = videoCtl(); } setVideoType(CVar4); iVar2 = videoCtl(); if (*(char *)(iVar2 + 0x43) != 0) { return uVar3; } configCtl(); iVar2 = getDeviceRotation(); *(undefined4 *)(param_1 + 0x13c) = param_2; *(undefined4 *)(param_1 + 0x140) = param_3; if (iVar2 == 2) { FUN_00012004(param_1,3,*(undefined4 *)(param_1 + 300),*(undefined4 *)(param_1 + 0x130), *(undefined4 *)(param_1 + 0x13c),*(undefined4 *)(param_1 + 0x140),(uint)param_5); } piVar1 = (int *)videoCtl(); (**(code **)(*piVar1 + 0x18))(piVar1,param_4); videoCtl(); load(); } uVar3 = FUN_000117a0(8,"Exiting function %s\n","loadRecSetting"); // vfprintf log return uVar3; } void FUN_00012fa0(int iParm1,void *pvParm2,uint uParm3) { void *__dest; if (*(void **)(iParm1 + 0x80) != (void *)0x0) { operator.delete[](*(void **)(iParm1 + 0x80)); *(undefined4 *)(iParm1 + 0x80) = 0; } __dest = operator.new[](uParm3); *(uint *)(iParm1 + 0x48) = uParm3; *(void **)(iParm1 + 0x80) = __dest; if (pvParm2 == (void *)0x0) { return; } if (__dest == (void *)0x0) { return; } memcpy(__dest,pvParm2,uParm3); return; } void FUN_00013000(int iParm1,void *pvParm2,size_t sParm3) { void *__dest; __dest = *(void **)(iParm1 + 0x7c); if (__dest == (void *)0x0) { __dest = operator.new[](0x38400); if (0x383ff < sParm3) { sParm3 = 0x38400; } *(void **)(iParm1 + 0x7c) = __dest; *(uint *)(iParm1 + 0x4c) = sParm3; if (pvParm2 == (void *)0x0) { return; } } else { if (0x383ff < sParm3) { sParm3 = 0x38400; } *(uint *)(iParm1 + 0x4c) = sParm3; if (pvParm2 == (void *)0x0) { return; } } if (__dest == (void *)0x0) { return; } memcpy(__dest,pvParm2,sParm3); return; } void FUN_00013078(int iParm1,void *pvParm2,uint uParm3) { void *__dest; if (*(void **)(iParm1 + 0x78) != (void *)0x0) { operator.delete[](*(void **)(iParm1 + 0x78)); *(undefined4 *)(iParm1 + 0x78) = 0; } __dest = operator.new[](uParm3); *(uint *)(iParm1 + 0x44) = uParm3; *(void **)(iParm1 + 0x78) = __dest; if (pvParm2 == (void *)0x0) { return; } if (__dest == (void *)0x0) { return; } memcpy(__dest,pvParm2,uParm3); return; } undefined4 FUN_0001313c(int iParm1,int iParm2) { int iVar1; int *piVar2; piVar2 = (int *)(iParm2 + 0x10); switch(*(undefined4 *)(iParm2 + 0x14)) { case 0: FUN_000117a0(8,"received event CAM_EVENT_TYPE_ERROR."); // vfprintf log FUN_00018f9c(iParm1,*piVar2); // activate_signal "errorType(int)" switch(*piVar2) { case 0: iVar1 = -0x9240; break; case 1: iVar1 = -0x9258; break; case 2: iVar1 = -0x926c; break; case 3: iVar1 = -0x9280; break; case 4: iVar1 = -0x9294; break; default: iVar1 = -0x9230; } goto LAB_000131c8; case 1: iVar1 = -0x9310; goto LAB_000131c8; case 2: FUN_000117a0(8,"photo save completed."); // vfprintf log if (*piVar2 == 2) { FUN_00018ee0(iParm1); } break; case 3: FUN_00018f28(iParm1,*(undefined4 *)(iParm1 + 0x58)); // activate_signal "recElapsedBytes(long)" break; case 4: FUN_00018f50(iParm1,*(undefined4 *)(iParm1 + 0x54)); // activate_signal "recElapsedBytes(long)" break; case 5: FUN_000117a0(8,"video record reached max length"); // vfprintf log FUN_00018f04(iParm1); break; case 6: FUN_00019504(iParm1,*(undefined4 *)(iParm1 + 0x7c),*(undefined4 *)(iParm1 + 0x4c)); iVar1 = -0x92c0; goto LAB_000131c8; case 7: FUN_00018f78(); break; case 8: break; case 9: FUN_0001939c(iParm1,*(undefined4 *)(iParm1 + 0x80),*(undefined4 *)(iParm1 + 0x48)); iVar1 = -0x92ac; goto LAB_000131c8; case 10: FUN_00019234(iParm1,*(undefined4 *)(iParm1 + 0x78),*(undefined4 *)(iParm1 + 0x44)); if (*(void **)(iParm1 + 0x78) != (void *)0x0) { operator.delete[](*(void **)(iParm1 + 0x78)); } *(undefined4 *)(iParm1 + 0x78) = 0; iVar1 = -0x934c; LAB_000131c8: FUN_000117a0(8,(int)&__DT_PLTGOT + iVar1); // vfprintf log break; case 0xb: break; case 0xc: break; case 0xd: FUN_0001900c(); break; case 0xe: FUN_00018fe8(); break; case 0xf: FUN_00019120(); } return 1; } void FUN_00013338(int iParm1) // void startViewfinder() { int iVar1; int *piVar2; undefined4 uVar3; FUN_000117a0(8,"Entering function %s\n","startViewfinder"); // vfprintf log FUN_00012264(iParm1); // CAM_UI_EngineInterface::cameraEngine() iVar1 = viewfinderCtl(); setOffset(iVar1,*(int *)(iParm1 + 0x144)); piVar2 = (int *)viewfinderCtl(); (**(code **)(*piVar2 + 8))(); FUN_000117a0(8,"viewfinder started"); // vfprintf log viewfinderCtl(); uVar3 = getVirtualColorKey(); *(undefined4 *)(iParm1 + 0x14c) = uVar3; FUN_000117a0(8,"Exiting function %s\n","startViewfinder"); // vfprintf log return; } void FUN_000133ec(int iParm1) // void startCamera() { int *piVar1; int iVar2; FUN_000117a0(8,"Entering function %s\n","startCamera"); // vfprintf log FUN_00012264(iParm1); // CAM_UI_EngineInterface::cameraEngine() piVar1 = (int *)viewfinderCtl(); iVar2 = (**(code **)(*piVar1 + 0x1c))(); if (iVar2 == 0) { iVar2 = UTIL_GetLensCoverStatus(); if (iVar2 == 0) { FUN_000117a0(8,"start viewfinder"); // vfprintf log FUN_00012164(iParm1,1,*(undefined4 *)(iParm1 + 0x134),*(undefined4 *)(iParm1 + 0x138), *(undefined4 *)(iParm1 + 300),*(undefined4 *)(iParm1 + 0x130), *(undefined4 *)(iParm1 + 0x13c),*(undefined4 *)(iParm1 + 0x140), (uint)*(byte *)(iParm1 + 0x31)); FUN_00013338(iParm1); // void startViewfinder() } } FUN_000117a0(8,"Exiting function %s\n","startCamera"); // vfprintf log return; } void FUN_000134dc(int iParm1) // void endStillImageCapture() { int iVar1; int *piVar2; FUN_000117a0(8,"Entering function %s\n","endStillImageCapture"); // vfprintf log if (-1 < *(int *)(*(int *)(iParm1 + 0x154) + 0x24)) { stop(); } iVar1 = FUN_00012264(iParm1); // CAM_UI_EngineInterface::cameraEngine() photoCtl(); end(); FUN_000117a0(8,"still image capture finish"); // vfprintf log if (*(int *)(iVar1 + 0x38) == 2) { piVar2 = (int *)viewfinderCtl(); (**(code **)(*piVar2 + 8))(); } FUN_000117a0(8,"Exiting function %s\n","endStillImageCapture"); // vfprintf log return; } void FUN_00013594(int iParm1) // void cancelCapturePhoto() { FUN_000117a0(8,"Entering function %s\n","cancelCapturePhoto"); // vfprintf log if (-1 < *(int *)(*(int *)(iParm1 + 0x154) + 0x24)) { stop(); } FUN_00012264(iParm1); // CAM_UI_EngineInterface::cameraEngine() photoCtl(); cancelCapture(); FUN_000117a0(8,"Exiting function %s\n","cancelCapturePhoto"); return; } void FUN_00013610(undefined4 uParm1) // void stopEncoderForPhoto() { FUN_000117a0(8,"Entering function %s\n","stopEncoderForPhoto"); // vfprintf log FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() photoCtl(); stopPhotoEncoder(); FUN_000117a0(8,"Exiting function %s\n","stopEncoderForPhoto"); // vfprintf log return; } void FUN_00013674(undefined4 uParm1) // void startSavePhoto() { FUN_000117a0(8,"Entering function %s\n","startSavePhoto"); // vfprintf log FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() photoCtl(); startSave(); FUN_000117a0(8,"Exiting function %s\n","startSavePhoto"); // vfprintf log return; } QString * FUN_000136d8(QString *pQParm1) { QString(pQParm1,(QString *)&DAT_00024a34); return pQParm1; } void FUN_0001370c(int iParm1) // close shutter sound { if (*(int *)(iParm1 + 0x24) != 0) { close(); releaseInstance(); } *(undefined4 *)(iParm1 + 0x24) = 0; FUN_000117a0(8," close shutter sound"); // vfprintf log return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 * FUN_00013760(undefined4 *puParm1) // ~CAM_UI_EngineInterface() undefined4 * FUN_000139a0(undefined4 *puParm1) undefined4 * FUN_00013bd8(undefined4 *puParm1) { int iVar1; int *piVar2; void *pvVar3; *puParm1 = 0x49208; FUN_000117a0(8,"Entering function %s\n","~CAM_UI_EngineInterface"); // vfprintf log iVar1 = camManager(); // libezxcameraengine.so if (*(int *)(iVar1 + 0xb4) != 0) { FUN_00016ae0(*(int *)(iVar1 + 0xb4),puParm1); // ???CAM_UI_ACS_MessageListener::removeEventHandler } if ((void *)puParm1[0x1b] == (void *)0x0) { pvVar3 = (void *)puParm1[0x1c]; } else { operator.delete[]((void *)puParm1[0x1b]); pvVar3 = (void *)puParm1[0x1c]; puParm1[0x1b] = 0; } if (pvVar3 == (void *)0x0) { pvVar3 = (void *)puParm1[0x1d]; } else { operator.delete[](pvVar3); pvVar3 = (void *)puParm1[0x1d]; puParm1[0x1c] = 0; } if (pvVar3 == (void *)0x0) { pvVar3 = (void *)puParm1[0x20]; } else { operator.delete[](pvVar3); pvVar3 = (void *)puParm1[0x20]; puParm1[0x1d] = 0; } if (pvVar3 == (void *)0x0) { pvVar3 = (void *)puParm1[0x1f]; } else { operator.delete[](pvVar3); pvVar3 = (void *)puParm1[0x1f]; } if (pvVar3 == (void *)0x0) { pvVar3 = (void *)puParm1[0x1e]; } else { operator.delete[](pvVar3); pvVar3 = (void *)puParm1[0x1e]; } if (pvVar3 != (void *)0x0) { operator.delete[](pvVar3); } FUN_0001370c(puParm1); // close shutter sound FUN_00011cf8(puParm1); // close the camera engine ClearObjectThreadEvent((QObject *)puParm1); removePostedEvents((QObject *)puParm1); FUN_000117a0(8,"Exiting function %s\n","~CAM_UI_EngineInterface"); // vfprintf log piVar2 = (int *)puParm1[0x1a]; /* iVar1 = *piVar2; *piVar2 = iVar1 + -1; if (iVar1 + -1 == 0) { if (piVar2 == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); } piVar2 = (int *)puParm1[0x19]; iVar1 = *piVar2; *piVar2 = iVar1 + -1; if (iVar1 + -1 == 0) { if (piVar2 == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); } piVar2 = (int *)puParm1[0x18]; iVar1 = *piVar2; *piVar2 = iVar1 + -1; if (iVar1 + -1 == 0) { if (piVar2 == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); } piVar2 = (int *)puParm1[0x17]; iVar1 = *piVar2; *piVar2 = iVar1 + -1; if (iVar1 + -1 == 0) { if (piVar2 == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); }*/ ~QObject((QObject *)puParm1); operator.delete(puParm1); return puParm1; } void FUN_00013e10(int iParm1,int iParm2,int iParm3) // ???void CAM_UI_EngineInterface::setShutterSoundDelayTime(QSize) { undefined4 uVar1; int iVar2; iVar2 = *(int *)(iParm1 + 0x24); if (iVar2 == 0) { FUN_000117a0(2,"(%s:%d)Assert failed!\n","src/CAM_UI_EngineInterface.cpp",0x629); // vfprintf log iVar2 = *(int *)(iParm1 + 0x24); if (iVar2 == 0) { /* WARNING: Subroutine does not return */ __assert_fail("__null != m_pShutterSoundPlayer","src/CAM_UI_EngineInterface.cpp",0x629, "void CAM_UI_EngineInterface::setShutterSoundDelayTime(QSize)"); } } if (iParm2 < iParm3) { iParm2 = iParm3; } uVar1 = 0xfa; if ((0x27f < iParm2) && (uVar1 = 0x1c2, iParm2 - 0x280U < 0x180)) { uVar1 = 0x15e; } *(undefined4 *)(iVar2 + 0x24) = uVar1; return; } void FUN_00013ee0(int iParm1) //???void CAM_UI_EngineInterface::cancelTimerSound() { if ((*(int *)(iParm1 + 0x24) == 0) && (FUN_000117a0(2,"(%s:%d)Assert failed!\n","src/CAM_UI_EngineInterface.cpp",0x622), *(int *)(iParm1 + 0x24) == 0)) { /* WARNING: Subroutine does not return */ __assert_fail("__null != m_pShutterSoundPlayer","src/CAM_UI_EngineInterface.cpp",0x622, "void CAM_UI_EngineInterface::cancelTimerSound()"); } stop(); return; } /* WARNING: Restarted to delay deadcode elimination for space: stack */ void FUN_00013f6c(undefined4 uParm1,int iParm2) // MYenableThumbnail { int iVar1; int iVar2; undefined4 uVar3; int iVar4; bool bVar5; FUN_000117a0(8,"Entering function %s\n"); // vfprintf log FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() iVar2 = photoCtl(); iVar4 = *(int *)(iVar2 + 0x38); iVar2 = photoCtl(); iVar2 = *(int *)(iVar2 + 0x3c); bVar5 = (bool)photoCtl(); enableThumbnail(bVar5); if (iParm2 != 0) { bVar5 = SBORROW4(iVar2,0xef); iVar1 = iVar2 + -0xef; if (iVar2 < 0xf0) { bVar5 = SBORROW4(iVar4,0x140); iVar1 = iVar4 + -0x140; } if (iVar1 < 0 == bVar5) { iVar2 = 0x140; uVar3 = 0xf0; } else { iVar2 = 0xa0; uVar3 = 0x78; } iVar4 = photoCtl(); setThumbnailSize(iVar4,iVar2); FUN_000117a0(8,"Thumbnail size set: width:%d, height:%d",iVar2,uVar3); // vfprintf log } FUN_000117a0(8,"Exiting function %s\n","enableThumbnail"); // vfprintf log return; } void FUN_00014090(int param_1,undefined4 param_2,undefined param_3,undefined4 param_4, undefined4 param_5,int param_6,undefined4 uParm7) // void enableCapturePreview() { bool bVar1; int iVar2; undefined4 uVar3; FUN_000117a0(8,"Entering function %s\n","enableCapturePreview"); // vfprintf log FUN_000117a0(8,"enable Capture Preview:%d",param_2); // vfprintf log *(undefined *)(param_1 + 0x2d) = (char)param_2; *(undefined *)(param_1 + 0x32) = param_3; FUN_00012264(param_1); // CAM_UI_EngineInterface::cameraEngine() bVar1 = (bool)photoCtl(); enablePreview(bVar1,*(bool *)(param_1 + 0x2d)); FUN_000117a0(8,"capture preview set: width:%d, height:%d ",param_4,param_5); // vfprintf log if ((*(char *)(param_1 + 0x2d) == 0) && (*(char *)(param_1 + 0x32) == 0)) { iVar2 = photoCtl(); uVar3 = setPreviewOffset(iVar2,param_6); FUN_000117a0(8,"capture preview set: xoffset:%d, yoffset:%d",param_6,uParm7); // vfprintf log FUN_000117a0(8,"capture preview set: CAM_Result = %d ",uVar3); // vfprintf log } FUN_000117a0(8,"Exiting function %s\n","enableCapturePreview"); // vfprintf log return; } void FUN_000141c0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,byte param_5) // void loadCapSetting() { int *piVar1; uint uVar2; int iVar3; uint uVar4; uint uVar5; FUN_000117a0(8,"Entering function %s\n","loadCapSetting"); // vfprintf log FUN_00012264(param_1); // CAM_UI_EngineInterface::cameraEngine() piVar1 = (int *)viewfinderCtl(); uVar2 = (**(code **)(*piVar1 + 0x1c))(); if (uVar2 == 0) { FUN_00012264(param_1); // CAM_UI_EngineInterface::cameraEngine() configCtl(); iVar3 = getDeviceRotation(); *(undefined4 *)(param_1 + 300) = param_2; *(undefined4 *)(param_1 + 0x130) = param_3; *(undefined4 *)(param_1 + 0x11c) = param_4; *(byte *)(param_1 + 0x31) = param_5; if (iVar3 == 2) { FUN_00012004(param_1,2,param_2,param_3,*(undefined4 *)(param_1 + 0x13c), *(undefined4 *)(param_1 + 0x140),(uint)param_5); } piVar1 = (int *)photoCtl(); (**(code **)(*piVar1 + 0x18))(piVar1,param_4); uVar5 = (uint)DAT_00049338; uVar4 = uVar2; if (DAT_00049338 == 0) { FUN_00013f6c(param_1,1,0x140,0xf0); // MYenableThumbnail iVar3 = photoCtl(); setPreviewSize(iVar3,0x140); uVar2 = 1; uVar4 = uVar5; } FUN_00014090(param_1,uVar2,uVar4,0xf0,0x140,uVar4,uVar4); // void enableCapturePreview() photoCtl(); load(); } FUN_000117a0(8,"Exiting function %s\n","loadCapSetting"); // vfprintf log return; } void FUN_00014384(int param_1,int param_2,int param_3,int param_4,byte param_5) // void initSyncStartPreview() { bool bVar1; int iVar2; int *piVar3; FUN_000117a0(8,"initSyncStartPreview"); // vfprintf log FUN_00012264(param_1); // CAM_UI_EngineInterface::cameraEngine() iVar2 = viewfinderCtl(); if (((*(char *)(iVar2 + 0x28) != 0) && (*(int *)(param_1 + 0x124) == param_2)) && (*(int *)(param_1 + 0x128) == param_3)) { FUN_000117a0(8,"async Start Viewfinder"); // vfprintf log return; } FUN_00012264(param_1); // CAM_UI_EngineInterface::cameraEngine() piVar3 = (int *)viewfinderCtl(); iVar2 = (**(code **)(*piVar3 + 0x1c))(); if (iVar2 == 0) { FUN_00012264(param_1); // CAM_UI_EngineInterface::cameraEngine() piVar3 = (int *)viewfinderCtl(); iVar2 = (**(code **)(*piVar3 + 0x18))(); if (iVar2 == 0) { return; } iVar2 = *(int *)(param_1 + 0x124); } else { iVar2 = *(int *)(param_1 + 0x124); } if ((iVar2 != param_2) || (bVar1 = false, *(int *)(param_1 + 0x128) != param_3)) { bVar1 = true; } if (bVar1) { FUN_000117a0(8,"cancel async Start Viewfinder"); // vfprintf log if (param_4 == 1) { FUN_000128e0(param_1); // void unloadCapSetting() FUN_00012db0(param_1,1,(uint)param_5); FUN_000141c0(param_1,*(undefined4 *)(param_1 + 300),*(undefined4 *)(param_1 + 0x130), *(undefined4 *)(param_1 + 0x11c),(uint)*(byte *)(param_1 + 0x31)); // void loadCapSetting() } else { if (param_4 == 2) { FUN_00012838(param_1); // void unloadRecSetting() FUN_00012db0(param_1,2,(uint)param_5); FUN_00012e3c(param_1,*(undefined4 *)(param_1 + 0x13c),*(undefined4 *)(param_1 + 0x140), *(undefined4 *)(param_1 + 0x120),(uint)*(byte *)(param_1 + 0x31)); // void loadRecSetting() } } } return; } void FUN_00014578(int param_1,undefined4 param_2,undefined4 param_3,int param_4,byte param_5, undefined param_6) { char *pcVar1; FUN_00014384(param_1,param_2,param_3,param_4,(uint)param_5); // void initSyncStartPreview() *(undefined4 *)(param_1 + 0x134) = param_2; *(undefined4 *)(param_1 + 0x138) = param_3; *(undefined *)(param_1 + 0x31) = param_6; FUN_000117a0(8,"startPreivew frame = %d, currentFrame = %d",param_4, *(undefined4 *)(param_1 + 0x114)); // vfprintf log pcVar1 = "flip is close"; if ((DAT_00049338 == 0) && (pcVar1 = "not the current frame", param_4 == *(int *)(param_1 + 0x114))) { if (param_5 == 0) { return; } FUN_000133ec(param_1); // void startCamera() return; } FUN_000117a0(8,pcVar1); // vfprintf log return; } void FUN_00014650(int iParm1,undefined4 uParm2,undefined4 uParm3) // void setViewfinderSize() { int iVar1; int iVar2; FUN_000117a0(8,"Entering function %s\n","setViewfinderSize"); // vfprintf log FUN_00012264(iParm1); // CAM_UI_EngineInterface::cameraEngine() *(undefined4 *)(iParm1 + 0x134) = uParm2; *(undefined4 *)(iParm1 + 0x138) = uParm3; iVar2 = *(int *)(iParm1 + 0x134); iVar1 = viewfinderCtl(); setSize(iVar1,iVar2); FUN_000117a0(8,"Exiting function %s\n","setViewfinderSize"); // vfprintf log return; } void FUN_000146e4(int iParm1,undefined4 uParm2,undefined4 uParm3) // void setViewfinderOffset() { int iVar1; FUN_000117a0(8,"Entering function %s\n","setViewfinderOffset"); // vfprintf log FUN_00012264(iParm1); // CAM_UI_EngineInterface::cameraEngine() *(undefined4 *)(iParm1 + 0x144) = uParm2; *(undefined4 *)(iParm1 + 0x148) = uParm3; iVar1 = viewfinderCtl(); setOffset(iVar1,*(int *)(iParm1 + 0x144)); FUN_000117a0(8,"Exiting function %s\n","setViewfinderOffset"); // vfprintf log return; } ulonglong FUN_00014760(void) { int *piVar1; int iVar2; uint extraout_r1; FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() piVar1 = (int *)videoCtl(); iVar2 = (**(code **)(*piVar1 + 0x24))(); if (iVar2 == 0) { return 0x10001b2e4; } FUN_000117a0(8); // vfprintf log return (ulonglong)extraout_r1; } ulonglong FUN_000147bc(int iParm1) // Enter resumeRecordVideo { byte bVar1; int *piVar2; int iVar3; uint extraout_r1; FUN_000117a0(8,"Enter resumeRecordVideo"); // vfprintf log if (((*(int *)(*(int *)(iParm1 + 0x68) + 0x10) != 0) && (bVar1 = *(byte *)(iParm1 + 0x37), bVar1 == 0)) && (*(char *)(iParm1 + 0x34) != 0)) { open(*(_WAV_Header **)(iParm1 + 0x24),(bool)((char)iParm1 + -0x48),(uint)bVar1); iVar3 = *(int *)(iParm1 + 0x24); *(uint *)(iVar3 + 0x24) = (uint)bVar1; play(SUB41(iVar3,0)); } FUN_00012264(iParm1); // CAM_UI_EngineInterface::cameraEngine() piVar2 = (int *)videoCtl(); iVar3 = (**(code **)(*piVar2 + 0x28))(); if (iVar3 == 0) { return 0x10001b310; } FUN_000117a0(8); // vfprintf log return (ulonglong)extraout_r1; } void FUN_0001488c(undefined4 uParm1) // void setPanelType() { CAM_PanelType CVar1; FUN_000117a0(8,"Entering function %s\n","setPanelType"); // vfprintf log CVar1 = FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() setCurrentPanelType(CVar1); FUN_000117a0(8,"Exiting function %s\n","setPanelType"); // vfprintf log return; } void FUN_000148fc(int iParm1) { int iVar1; FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() iVar1 = viewfinderCtl(); *(undefined4 *)(iParm1 + 0x84) = *(undefined4 *)(iVar1 + 8); return; } void FUN_00014918(undefined4 uParm1) // void turnOffMainDisplay() { FUN_000117a0(8,"Entering function %s\n","turnOffMainDisplay"); // vfprintf log FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() turnOffMainDisplay(); FUN_000117a0(8,"Exiting function %s\n","turnOffMainDisplay"); // vfprintf log return; } void FUN_00014978(undefined4 uParm1) // void captureTimeoutSlot() { FUN_000117a0(8,"Entering function %s\n","captureTimeoutSlot"); // vfprintf log FUN_00013594(uParm1); // void cancelCapturePhoto() FUN_000117a0(4,"~~~~~~~~CAM_UI_EngineInterface::captureTimeoutSlot\n"); // vfprintf log FUN_00018fc4(uParm1); FUN_000117a0(8,"Exiting function %s\n","captureTimeoutSlot"); // vfprintf log return; } undefined4 * FUN_000149f0(undefined4 *puParm1,undefined4 *puParm2) undefined4 * FUN_00014b70(undefined4 *puParm1,undefined4 *puParm2) { undefined4 uVar1; undefined4 uVar2; undefined4 uVar3; QCustomEvent((QCustomEvent *)puParm1,0x2a92); uVar1 = puParm2[1]; uVar2 = puParm2[2]; uVar3 = puParm2[3]; puParm1[4] = *puParm2; puParm1[5] = uVar1; puParm1[6] = uVar2; puParm1[7] = uVar3; *puParm1 = 0x49058; return puParm1; } undefined8 FUN_00014bc4(int iParm1,int iParm2) // ???acsEvent(int) { int iVar1; char *pcVar2; undefined8 uVar3; pcVar2 = "CAM_UI_EngineInterface::acsEvent - ACS_TO_CAMERA_PLAY_SHUTTER_SOUND\n"; iVar1 = 8; if (iParm2 == 0x2796) { FUN_000117a0(); // vfprintf log iVar1 = *(int *)(iParm1 + 0x24); pcVar2 = (char *)0x0; if (iVar1 != 0) { uVar3 = play(SUB41(iVar1,0)); return uVar3; } } return CONCAT44(iVar1,pcVar2); } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00014c28(undefined4 uParm1,int iParm2,int iParm3,QString *pQParm4) // void setExifUserTag() // установка подписи фотки { int iVar1; int *piVar2; ushort uVar3; CAM_ExifTag CVar4; undefined4 uVar5; CAM_VideoTag CVar6; int iVar7; int iVar8; undefined4 uVar9; int iVar10; int iVar11; int local_d0; int local_cc; int local_c8; int *local_c4; int *local_c0; undefined4 local_bc; int **local_b8; undefined *local_b4; undefined auStack176 [48]; undefined auStack128 [48]; int *local_50 [2]; int *local_48 [2]; int local_40; int local_3c; int local_38; int local_34; undefined4 uStack4; uStack4 = 0x14c34; local_cc = -0x9940; FUN_000117a0(8,"Entering function %s\n","setExifUserTag"); // vfprintf log if (iParm2 == 0) { if (iParm3 == 0) { getSystemLanguageCode(); QString((QString *)local_48,(QString *)local_50); getISO639LangCode(SUB41(local_48,0)); /* iVar7 = *local_48[0]; *local_48[0] = iVar7 + -1; if (iVar7 + -1 == 0) { if (local_48[0] == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); }*/ FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() uVar3 = videoCtl(); setLanguageCode(uVar3); FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() CVar6 = videoCtl(); iVar7 = setVideoUserTag(CVar6,(uchar *)0x0,0); /* iVar8 = *local_50[0]; *local_50[0] = iVar8 + -1; if (iVar8 + -1 == 0) { if (local_50[0] == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); }*/ } else { FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() CVar4 = photoCtl(); iVar7 = setExifUserTag(CVar4,(char *)0x4,0); } if (iVar7 != 0) { FUN_000117a0(8,"setExifUserTag error\n"); // vfprintf log } iVar7 = FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() sendACSMsg(iVar7,0x2914); piVar2 = &local_d0; } else { if (iParm3 == 0) { local_b8 = local_50; local_b4 = (undefined *)&local_d0; getSystemLanguageCode(); QString((QString *)local_b8,(QString *)local_48); getISO639LangCode(SUB41(local_b8,0)); /* iVar7 = *local_50[0]; *local_50[0] = iVar7 + -1; if (iVar7 + -1 == 0) { if (local_50[0] == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); }*/ FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() uVar3 = videoCtl(); setLanguageCode(uVar3); FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() CVar6 = videoCtl(); local_c0 = &local_40; utf8(); local_c4 = &local_38; iVar7 = *(int *)(local_3c + 4); utf8(); if (*(char **)(local_34 + 4) != (char *)0x0) { strlen(*(char **)(local_34 + 4)); } iVar7 = setVideoUserTag(CVar6,(uchar *)0x0,iVar7); local_40 = 0x33528; local_bc = 0x4a8; local_c8 = 0x4dc; local_38 = local_40; ~QGArray((QGArray *)local_c4); ~QGArray((QGArray *)local_c0); if (iVar7 != 0) { FUN_000117a0(8,"setExifUserTag error\n"); // vfprintf log } /* iVar7 = *local_48[0]; *local_48[0] = iVar7 + -1; if (iVar7 + -1 == 0) { if (local_48[0] == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); }*/ } else { local_c4 = &local_38; local_b4 = (undefined *)&local_d0; utf8(); if (*(char **)(local_34 + 4) != (char *)0x0) { strlen(*(char **)(local_34 + 4)); } local_c0 = &local_40; utf8(); iVar7 = *(int *)(local_3c + 4); FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() CVar4 = photoCtl(); iVar7 = setExifUserTag(CVar4,(char *)0x4,iVar7); local_38 = 0x33528; local_bc = 0x4a8; local_c8 = 0x4dc; local_40 = local_38; ~QGArray((QGArray *)local_c0); ~QGArray((QGArray *)local_c4); if (iVar7 == 0) { local_b8 = local_50; } else { FUN_000117a0(8,"setExifUserTag error\n"); // vfprintf log local_b8 = local_50; } } utf8(); iVar7 = FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() sendACSMsg(iVar7,(char *)0x2914); local_40 = *(int *)((int)&__DT_PLTGOT + local_c8) + 8; ~QGArray((QGArray *)local_c0); QString((QString *)local_b8,pQParm4); iVar8 = local_50[0][4]; iVar11 = local_50[0][2]; iVar7 = -(iVar8 * 2 + 0xeU & 0xfffffff8); if (iVar11 == 0) { FUN_000117a0(8,"setExifUserTag error\n"); // vfprintf log } else { iVar10 = 0; if (0 < iVar8) { do { iVar1 = iVar10 * 2; iVar10 = iVar10 + 1; *(undefined2 *)((int)&local_d0 + iVar1 + iVar7) = CONCAT11(*(undefined *)(iVar1 + iVar11),*(undefined *)(iVar1 + iVar11 + 1)); } while (iVar10 < iVar8); } uVar5 = FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() sendACSUnicodeMsg(uVar5,0x2915,(int *)((int)&local_d0 + iVar7), *(undefined *)((int)&local_d0 + iVar7)); } /* iVar8 = *local_50[0]; *local_50[0] = iVar8 + -1; piVar2 = (int *)local_b4; if (iVar8 + -1 == 0) { if (local_50[0] == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(*(undefined *)((int)&local_d0 + iVar7)); piVar2 = (int *)local_b4; }*/ } if (iParm3 != 0) { local_d0 = 0x4bc; local_50[0] = _DAT_00049358; if (_DAT_00049358 == (int *)0x0) { local_50[0] = (int *)makeSharedNull(*(undefined *)piVar2); } *local_50[0] = *local_50[0] + 1; QString(local_48,"/etc/base_version.txt",*(undefined *)piVar2); QFile(auStack128,local_48,*(undefined *)piVar2); /* iVar7 = *local_48[0]; *local_48[0] = iVar7 + -1; if (iVar7 + -1 == 0) { if (local_48[0] == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(*(undefined *)piVar2); }*/ iVar7 = open(auStack128,*(undefined *)piVar2); if (iVar7 == 0) { local_b8 = local_50; operator=(local_b8,0x1b39c,*(undefined *)piVar2); } else { QTextStream(auStack176,auStack128,*(undefined *)piVar2); setEncoding(auStack176,*(undefined *)piVar2); local_b8 = local_50; readLine(*(undefined *)piVar2); operator=(local_b8,local_48,*(undefined *)piVar2); /* iVar7 = *local_48[0]; *local_48[0] = iVar7 + -1; if (iVar7 + -1 == 0) { if (local_48[0] == **(int ***)((int)&__DT_PLTGOT + local_d0)) { **(int ***)((int)&__DT_PLTGOT + local_d0) = (int *)0x0; } deleteSelf(*(undefined *)piVar2); }*/ close(*(undefined *)piVar2); ~QTextStream(auStack176,*(undefined *)piVar2); } FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() uVar5 = photoCtl(*(undefined *)piVar2); local_c0 = &local_40; utf8(*(undefined *)piVar2); local_c4 = &local_38; uVar9 = *(undefined4 *)(local_3c + 4); utf8(*(undefined *)piVar2); if (*(int *)(local_34 + 4) != 0) { strlen(*(int *)(local_34 + 4),*(undefined *)piVar2); } iVar7 = setExifUserTag(uVar5,5,uVar9,*(undefined *)piVar2); local_bc = 0x4a8; local_c8 = 0x4dc; local_38 = 0x33528; ~QGArray(local_c4,*(undefined *)piVar2); local_40 = 0x33528; ~QGArray(local_c0,*(undefined *)piVar2); if (iVar7 != 0) { FUN_000117a0(8,"setExifUserTag Software error\n"); // vfprintf log } QString(local_48,"Motorola Phone",*(undefined *)piVar2); FUN_00012264(uParm1); // CAM_UI_EngineInterface::cameraEngine() uVar5 = photoCtl(*(undefined *)piVar2); utf8(*(undefined *)piVar2); uVar9 = *(undefined4 *)(local_3c + 4); utf8(*(undefined *)piVar2); if (*(int *)(local_34 + 4) != 0) { strlen(*(int *)(local_34 + 4),*(undefined *)piVar2); } iVar7 = setExifUserTag(uVar5,2,uVar9,*(undefined *)piVar2); iVar8 = *(int *)((int)&__DT_PLTGOT + local_c8) + 8; local_38 = iVar8; ~QGArray(local_c4,*(undefined *)piVar2); local_40 = iVar8; ~QGArray(local_c0,*(undefined *)piVar2); if (iVar7 != 0) { FUN_000117a0(8,"setExifUserTag Model error\n"); // vfprintf log } /* iVar7 = *local_48[0]; *local_48[0] = iVar7 + -1; if (iVar7 + -1 == 0) { if (local_48[0] == **(int ***)((int)&__DT_PLTGOT + local_d0)) { **(int ***)((int)&__DT_PLTGOT + local_d0) = (int *)0x0; } deleteSelf(*(undefined *)piVar2); }*/ ~QFile(auStack128,*(undefined *)piVar2); /* iVar7 = *local_50[0]; *local_50[0] = iVar7 + -1; if (iVar7 + -1 == 0) { if (local_50[0] == **(int ***)((int)&__DT_PLTGOT + local_d0)) { **(int ***)((int)&__DT_PLTGOT + local_d0) = (int *)0x0; } deleteSelf(*(undefined *)piVar2); }*/ } FUN_000117a0(8,"Exiting function %s\n",(int)&__DT_PLTGOT + local_cc); // vfprintf log return; } /* WARNING: Could not reconcile some variable overlaps */ undefined4 FUN_0001545c(int iParm1,int *piParm2,bool bParm3) { undefined2 uVar1; ushort uVar2; CAM_WaveParser *this; void *__dest; undefined4 uVar3; char *pcVar4; undefined4 local_58; int local_54; undefined4 local_50; undefined4 local_4c; undefined4 local_48; undefined4 local_44; undefined4 local_40; uint local_3c; int local_38; undefined4 local_34; undefined4 local_30; undefined4 local_2c; void *local_28; local_38 = 1 - *(uint *)(*piParm2 + 0x10); if (1 < *(uint *)(*piParm2 + 0x10)) { local_38 = 0; } if (local_38 == 0) { if (*(int *)(iParm1 + 0x24) == 0) { uVar3 = getInstance(bParm3); *(bool *)(iParm1 + 0x33) = bParm3; *(undefined4 *)(iParm1 + 0x24) = uVar3; } FUN_000117a0(8,"begin parser timer sound"); // vfprintf log utf8(); pcVar4 = *(char **)(local_54 + 4); this = (CAM_WaveParser *)operator.new(0x10); CAM_WaveParser(this,pcVar4,true); local_58 = 0x33528; ~QGArray((QGArray *)&local_58); uVar1 = audioFormat(); local_50 = CONCAT22(local_50._2_2_,uVar1); uVar2 = numChannels(); local_50 = local_50 & 0xffff | (uint)uVar2 << 0x10; local_4c = sampleRate(); local_48 = byteRate(); uVar1 = blockAlign(); local_44 = CONCAT22(local_44._2_2_,uVar1); uVar2 = bitsPerSample(); local_44 = local_44 & 0xffff | (uint)uVar2 << 0x10; local_40 = soundDataSize(); local_3c = soundDataSize(); local_34 = 0x2580; local_30 = 0x12c00; local_2c = 0x25800; local_28 = (void *)soundData(); *(uint *)(iParm1 + 0xe4) = local_50; *(undefined4 *)(iParm1 + 0xe8) = local_4c; *(undefined4 *)(iParm1 + 0xec) = local_48; *(uint *)(iParm1 + 0xf0) = local_44; *(undefined4 *)(iParm1 + 0xf4) = local_40; *(uint *)(iParm1 + 0xf8) = local_3c; *(int *)(iParm1 + 0xfc) = local_38; *(undefined4 *)(iParm1 + 0x100) = local_34; *(undefined4 *)(iParm1 + 0x104) = local_30; *(undefined4 *)(iParm1 + 0x108) = local_2c; *(void **)(iParm1 + 0x10c) = local_28; if (*(void **)(iParm1 + 0x74) != (void *)0x0) { operator.delete[](*(void **)(iParm1 + 0x74)); } __dest = operator.new[](local_3c); *(void **)(iParm1 + 0x74) = __dest; memcpy(__dest,local_28,local_3c); *(undefined4 *)(iParm1 + 0x10c) = *(undefined4 *)(iParm1 + 0x74); open(*(_WAV_Header **)(iParm1 + 0x24),SUB41((uint *)(iParm1 + 0xe4),0),0); play(SUB41(*(undefined4 *)(iParm1 + 0x24),0)); if (this != (CAM_WaveParser *)0x0) { ~CAM_WaveParser(this); operator.delete(this); } uVar3 = 1; } else { FUN_000117a0(8,"wave filename is invalid, error timer sound"); // vfprintf log uVar3 = 0; } return uVar3; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 FUN_00015680(int param_1,QString *param_2,bool param_3,int param_4,undefined4 param_5, undefined param_6) // shutter sound { undefined2 uVar1; undefined2 uVar2; int iVar3; QString *this; CAM_WaveParser *this_00; undefined4 uVar4; undefined4 uVar5; undefined4 uVar6; uint __n; void *__src; void *__dest; char *pcVar7; undefined4 *puVar8; undefined4 local_c0; undefined4 local_b4; QFile aQStack144 [48]; QFile aQStack96 [48]; undefined4 local_30; int local_2c; iVar3 = getInstance(param_3); *(undefined4 *)(iVar3 + 0x2c) = param_5; *(bool *)(param_1 + 0x33) = param_3; *(int *)(param_1 + 0x24) = iVar3; if (param_4 == 0) { *(undefined *)(param_1 + 0x37) = param_6; iVar3 = operator==((QString *)(param_1 + 0x68),param_2); if (iVar3 != 0) { utf8(); iVar3 = -0x8e98; uVar4 = *(undefined4 *)(local_2c + 4); goto LAB_00015910; } LAB_000156f0: this = (QString *)(param_1 + 0x68); } else { this = (QString *)(param_1 + 100); *(undefined *)(param_1 + 0x36) = param_6; iVar3 = operator==(this,param_2); if (iVar3 != 0) { utf8(); iVar3 = -0x8e0c; uVar4 = *(undefined4 *)(local_2c + 4); LAB_00015910: FUN_000117a0(8,(int)&__DT_PLTGOT + iVar3,uVar4); // vfprintf log local_30 = 0x33528; ~QGArray((QGArray *)&local_30); return 1; } if (param_4 != 1) goto LAB_000156f0; } operator=(this,param_2); QFile(aQStack96,(QString *)(param_1 + 100)); QFile(aQStack144,(QString *)(param_1 + 0x68)); iVar3 = exists(); if ((iVar3 == 0) && (param_4 != 0)) { FUN_000117a0(8,"wave filename is invalid, use default sound"); // vfprintf log puVar8 = (undefined4 *)(param_1 + 0x8c); } else { iVar3 = exists(); if ((iVar3 != 0) || (param_4 != 0)) { FUN_000117a0(8,"begin parser shutter sound"); // vfprintf log utf8(); pcVar7 = *(char **)(local_2c + 4); this_00 = (CAM_WaveParser *)operator.new(0x10); CAM_WaveParser(this_00,pcVar7,true); local_30 = 0x33528; ~QGArray((QGArray *)&local_30); uVar1 = audioFormat(); uVar2 = numChannels(); local_c0 = CONCAT22(uVar2,uVar1); uVar4 = sampleRate(); uVar5 = byteRate(); uVar1 = blockAlign(); uVar2 = bitsPerSample(); local_b4 = CONCAT22(uVar2,uVar1); uVar6 = soundDataSize(); __n = soundDataSize(); __src = (void *)soundData(); if (param_4 == 0) { *(undefined4 *)(param_1 + 0xb8) = local_c0; *(undefined4 *)(param_1 + 0xbc) = uVar4; *(undefined4 *)(param_1 + 0xc0) = uVar5; *(undefined4 *)(param_1 + 0xc4) = local_b4; *(undefined4 *)(param_1 + 200) = uVar6; *(uint *)(param_1 + 0xcc) = __n; *(undefined4 *)(param_1 + 0xd0) = 0; *(undefined4 *)(param_1 + 0xd4) = 0x2580; *(undefined4 *)(param_1 + 0xd8) = 0x12c00; *(undefined4 *)(param_1 + 0xdc) = 0x25800; *(void **)(param_1 + 0xe0) = __src; if (*(void **)(param_1 + 0x70) != (void *)0x0) { operator.delete[](*(void **)(param_1 + 0x70)); } __dest = operator.new[](__n); *(void **)(param_1 + 0x70) = __dest; memcpy(__dest,__src,__n); *(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_1 + 0x70); } else { *(undefined4 *)(param_1 + 0x8c) = local_c0; *(undefined4 *)(param_1 + 0x90) = uVar4; *(undefined4 *)(param_1 + 0x94) = uVar5; *(undefined4 *)(param_1 + 0x98) = local_b4; *(undefined4 *)(param_1 + 0x9c) = uVar6; *(uint *)(param_1 + 0xa0) = __n; *(undefined4 *)(param_1 + 0xa4) = 0; *(undefined4 *)(param_1 + 0xa8) = 0x2580; *(undefined4 *)(param_1 + 0xac) = 0x12c00; *(undefined4 *)(param_1 + 0xb0) = 0x25800; *(void **)(param_1 + 0xb4) = __src; if (*(void **)(param_1 + 0x6c) != (void *)0x0) { operator.delete[](*(void **)(param_1 + 0x6c)); } __dest = operator.new[](__n); *(void **)(param_1 + 0x6c) = __dest; memcpy(__dest,__src,__n); *(undefined4 *)(param_1 + 0xb4) = *(undefined4 *)(param_1 + 0x6c); } if (this_00 != (CAM_WaveParser *)0x0) { ~CAM_WaveParser(this_00); operator.delete(this_00); } FUN_000117a0(8,"set shutter sound"); // vfprintf log goto LAB_000158c0; } FUN_000117a0(8,"wave filename is invalid, use def sound Beep"); // vfprintf log puVar8 = (undefined4 *)(param_1 + 0xb8); } uVar6 = _DAT_432c4030; uVar5 = _DAT_432c402c; uVar4 = _DAT_432c4028; *puVar8 = _DAT_432c4024; puVar8[1] = uVar4; puVar8[2] = uVar5; puVar8[3] = uVar6; uVar6 = _DAT_432c4040; uVar5 = _DAT_432c403c; uVar4 = _DAT_432c4038; puVar8[4] = _DAT_432c4034; puVar8[5] = uVar4; puVar8[6] = uVar5; puVar8[7] = uVar6; uVar5 = _DAT_432c404c; uVar4 = _DAT_432c4048; puVar8[8] = _DAT_432c4044; puVar8[9] = uVar4; puVar8[10] = uVar5; LAB_000158c0: ~QFile(aQStack144); ~QFile(aQStack96); return 1; } int FUN_00015a60(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,bool param_5, CAM_Quality param_6) { uint uVar1; int iVar2; undefined4 local_40; int local_3c; undefined4 local_38; undefined4 local_34; undefined4 local_30; undefined4 local_2c; undefined4 local_28; undefined4 local_24; if ((*(char *)(param_1 + 0x2f) == 0) || (iVar2 = 0, 0xfff < *(uint *)(param_1 + 0x3c))) { local_30 = param_3; local_2c = param_4; local_28 = param_3; local_24 = param_4; FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() photoCtl(); local_34 = local_2c; local_38 = local_30; uVar1 = getEstimatedImageSize((CAM_Size)&local_38,param_6,0); utf8(); iVar2 = getNumJPEGPhotoCanTake(*(char **)(local_3c + 4),uVar1,param_5,0); local_40 = 0x33528; ~QGArray((QGArray *)&local_40); FUN_000117a0(8,"can take photos = %d",iVar2); // vfprintf log if (*(char *)(param_1 + 0x2f) != 0) { if (iVar2 < 2) { iVar2 = 0; } else { iVar2 = 1; } } } return iVar2; } undefined4 FUN_00015b70(int iParm1) // record video { byte bVar1; int *piVar2; int iVar3; undefined4 uVar4; undefined4 local_20; int local_1c; uVar4 = 0; FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() *(undefined4 *)(iParm1 + 0x58) = 0; *(undefined4 *)(iParm1 + 0x54) = 0; *(undefined4 *)(iParm1 + 0x110) = 0; piVar2 = (int *)videoCtl(); iVar3 = (**(code **)(*piVar2 + 0x20))(); if (iVar3 == 0) { if (((*(int *)(*(int *)(iParm1 + 0x68) + 0x10) != 0) && (bVar1 = *(byte *)(iParm1 + 0x37), bVar1 == 0)) && (*(char *)(iParm1 + 0x34) != 0)) { open(*(_WAV_Header **)(iParm1 + 0x24),(bool)((char)iParm1 + -0x48),(uint)bVar1); iVar3 = *(int *)(iParm1 + 0x24); *(uint *)(iVar3 + 0x24) = (uint)bVar1; play(SUB41(iVar3,0)); } piVar2 = (int *)viewfinderCtl(); (**(code **)(*piVar2 + 8))(); uVar4 = 1; } else { utf8(); remove(*(char **)(local_1c + 4)); local_20 = 0x33528; ~QGArray((QGArray *)&local_20); FUN_000117a0(8,"record video stop error."); // vfprintf log } return uVar4; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 FUN_00015c94(int iParm1) // Enter the capture video { byte bVar1; long lVar2; char *pcVar3; int iVar4; int *piVar5; undefined4 *puVar6; bool bVar7; undefined4 local_38; int local_34; int *local_30 [3]; FUN_00012264(); // CAM_UI_EngineInterface::cameraEngine() local_30[0] = _DAT_00049358; bVar7 = _DAT_00049358 == (int *)0x0; *(undefined4 *)(iParm1 + 0x110) = 2; if (bVar7) { local_30[0] = (int *)makeSharedNull(); } *local_30[0] = *local_30[0] + 1; puVar6 = (undefined4 *)(iParm1 + 0x60); if (*(int *)(*(int *)(iParm1 + 0x60) + 0x10) == 0) { puVar6 = &DAT_00024a30; } operator=((QString *)local_30,(QString *)puVar6); operator=((QString *)(undefined4 *)(iParm1 + 0x60),""); utf8(); FUN_000117a0(8,"capture video %s",*(undefined4 *)(local_34 + 4)); // vfprintf log local_38 = 0x33528; ~QGArray((QGArray *)&local_38); operator=((QString *)(iParm1 + 0x5c),(QString *)local_30); if (((*(int *)(*(int *)(iParm1 + 0x68) + 0x10) != 0) && (bVar1 = *(byte *)(iParm1 + 0x37), bVar1 == 0)) && (*(char *)(iParm1 + 0x34) != 0)) { open(*(_WAV_Header **)(iParm1 + 0x24),(bool)((char)iParm1 + -0x48),(uint)bVar1); iVar4 = *(int *)(iParm1 + 0x24); *(uint *)(iVar4 + 0x24) = (uint)bVar1; play(SUB41(iVar4,0)); } lVar2 = videoCtl(); setVideoDuration(lVar2); pcVar3 = (char *)videoCtl(); utf8(); iVar4 = open(pcVar3); local_38 = 0x33528; ~QGArray((QGArray *)&local_38); if (iVar4 == 0) { *(undefined4 *)(iParm1 + 0x58) = 0; *(undefined4 *)(iParm1 + 0x54) = 0; piVar5 = (int *)videoCtl(); iVar4 = (**(code **)(*piVar5 + 0x1c))(); if (iVar4 == 0) { /* iVar4 = *local_30[0]; *local_30[0] = iVar4 + -1; if (iVar4 + -1 == 0) { if (local_30[0] == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); }*/ return 1; } FUN_000117a0(8,"record video start error."); // vfprintf log /* iVar4 = *local_30[0]; *(undefined4 *)(iParm1 + 0x110) = 0; *local_30[0] = iVar4 + -1; if (iVar4 + -1 == 0) { if (local_30[0] == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); }*/ } else { FUN_000117a0(8,"can\'t open the video recorder."); // vfprintf log /* iVar4 = *local_30[0]; *(undefined4 *)(iParm1 + 0x110) = 0; *local_30[0] = iVar4 + -1; if (iVar4 + -1 == 0) { if (local_30[0] == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); }*/ } return 0; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ int FUN_00015f50(int iParm1) // Enter the capture Photo { int iVar1; int *piVar2; CaptureMode CVar3; int iVar4; undefined4 uVar5; uint uVar6; undefined4 local_58; int local_54; undefined4 local_50; int local_4c; int *local_48 [2]; int *local_40 [2]; timezone tStack56; timeval local_30; FUN_000117a0(8,"Enter the capture Photo"); // vfprintf log gettimeofday(&local_30,(__timezone_ptr_t)&tStack56); *(int *)(iParm1 + 0x88) = local_30.tv_usec / 1000 + local_30.tv_sec * 1000; *(undefined *)(iParm1 + 0x150) = 0; FUN_00012264(iParm1); // CAM_UI_EngineInterface::cameraEngine() iVar1 = photoCtl(); if (*(char *)(iVar1 + 0x5c) != 0) { FUN_000117a0(8,"camera engine is captureing. Cancel unfinished capture."); // vfprintf log photoCtl(); end(); } *(undefined4 *)(iParm1 + 0x110) = 1; camManager(); // libezxcameraengine.so iVar1 = globalModel(); QString((QString *)local_40,(QString *)(iVar1 + 0x84)); piVar2 = (int *)camManager(); // libezxcameraengine.so iVar1 = (**(code **)(*piVar2 + 8))(); if ((iVar1 == 0) && (DAT_435b6262 != 0)) { camManager(); // libezxcameraengine.so iVar1 = globalModel(); if (*(int *)(iVar1 + 0x2c4) != 0) { uVar5 = 1; goto LAB_0001602c; } } uVar5 = 0; LAB_0001602c: FUN_00014c28(iParm1,uVar5); // void setExifUserTag() // установка подписи фотки local_48[0] = _DAT_00049358; if (_DAT_00049358 == (int *)0x0) { local_48[0] = (int *)makeSharedNull(); } *local_48[0] = *local_48[0] + 1; utf8(); FUN_000117a0(8,"CAM_UI_EngineInterface: cPhotoSaveToRamTempName = %s", *(undefined4 *)(local_4c + 4)); // vfprintf log local_50 = 0x33528; ~QGArray((QGArray *)&local_50); utf8(); FUN_000117a0(8,"CAM_UI_EngineInterface: m_strFileName = %s",*(undefined4 *)(local_4c + 4)); // vfprintf log local_50 = 0x33528; ~QGArray((QGArray *)&local_50); uVar6 = *(uint *)(*(int *)(iParm1 + 0x60) + 0x10); iVar1 = 1 - uVar6; if (1 < uVar6) { iVar1 = 0; } if (iVar1 == 0) { operator=((QString *)local_48,(QString *)(iParm1 + 0x60)); *(undefined *)(iParm1 + 0x30) = 0; } else { operator=((QString *)local_48,(QString *)&DAT_00024a34); *(undefined *)(iParm1 + 0x30) = 1; } utf8(); FUN_000117a0(8,"photo = %s",*(undefined4 *)(local_4c + 4)); // vfprintf log local_58 = 0x33528; local_50 = local_58; ~QGArray((QGArray *)&local_50); if (*(char *)(iParm1 + 0x30) == 0) { operator=((QString *)(iParm1 + 0x5c),(QString *)local_48); } piVar2 = (int *)photoCtl(); utf8(); iVar1 = (**(code **)(*piVar2 + 0x14))(piVar2,*(undefined4 *)(local_4c + 4)); local_50 = local_58; ~QGArray((QGArray *)&local_50); if (iVar1 == 0) { uVar5 = latin1(); FUN_000117a0(8,"m_ShutterSoundFilenameStillCpt %s ",uVar5); // vfprintf log if (((*(int *)(*(int *)(iParm1 + 100) + 0x10) == 0) || (*(byte *)(iParm1 + 0x36) != 0)) || (*(char *)(iParm1 + 0x35) == 0)) { FUN_000117a0(8,"Not playing shutter sound "); // vfprintf log open(*(_WAV_Header **)(iParm1 + 0x24),false,0); } else { open(*(_WAV_Header **)(iParm1 + 0x24),(bool)((char)iParm1 + -0x74), (uint)*(byte *)(iParm1 + 0x36)); FUN_00013e10(iParm1,*(undefined4 *)(iParm1 + 300),*(undefined4 *)(iParm1 + 0x130)); // ???void CAM_UI_EngineInterface::setShutterSoundDelayTime(QSize) } CVar3 = photoCtl(); iVar1 = capture(CVar3,(void *)0x0); *(undefined4 *)(iParm1 + 0x110) = 0; if (iVar1 == 0) { iVar4 = *(int *)(iParm1 + 0x154); if (-1 < *(int *)(iVar4 + 0x24)) { stop(); iVar4 = *(int *)(iParm1 + 0x154); } start(iVar4,true); } else { FUN_000117a0(4,"capture photo error, return value:%x",iVar1); // vfprintf log } /* iVar4 = *local_48[0]; *local_48[0] = iVar4 + -1; if (iVar4 + -1 == 0) { if (local_48[0] == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); } iVar4 = *local_40[0]; *local_40[0] = iVar4 + -1; if (iVar4 + -1 == 0) { if (local_40[0] == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); }*/ } else { utf8(); FUN_000117a0(8,"open file %s error.",*(undefined4 *)(local_54 + 4)); // vfprintf log ~QGArray((QGArray *)&local_58); /* iVar1 = *local_48[0]; *(undefined4 *)(iParm1 + 0x110) = 0; *local_48[0] = iVar1 + -1; if (iVar1 + -1 == 0) { if (local_48[0] == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); } iVar1 = *local_40[0]; *local_40[0] = iVar1 + -1; if (iVar1 + -1 == 0) { if (local_40[0] == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); }*/ iVar1 = -0x7fffe000; } return iVar1; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00016498(void) { int *piVar1; int iVar2; piVar1 = DAT_00024a54; iVar2 = *DAT_00024a54; *DAT_00024a54 = iVar2 + -1; if (iVar2 + -1 == 0) { if (piVar1 == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); return; } return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_000164f0(void) { int *piVar1; int iVar2; piVar1 = DAT_00024a50; iVar2 = *DAT_00024a50; *DAT_00024a50 = iVar2 + -1; if (iVar2 + -1 == 0) { if (piVar1 == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); return; } return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00016548(void) { int *piVar1; int iVar2; piVar1 = DAT_00024a4c; iVar2 = *DAT_00024a4c; *DAT_00024a4c = iVar2 + -1; if (iVar2 + -1 == 0) { if (piVar1 == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); return; } return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_000165a0(void) { int *piVar1; int iVar2; piVar1 = DAT_00024a48; iVar2 = *DAT_00024a48; *DAT_00024a48 = iVar2 + -1; if (iVar2 + -1 == 0) { if (piVar1 == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); return; } return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_000165f8(void) { int *piVar1; int iVar2; piVar1 = DAT_00024a44; iVar2 = *DAT_00024a44; *DAT_00024a44 = iVar2 + -1; if (iVar2 + -1 == 0) { if (piVar1 == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); return; } return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00016650(void) { int *piVar1; int iVar2; piVar1 = DAT_00024a40; iVar2 = *DAT_00024a40; *DAT_00024a40 = iVar2 + -1; if (iVar2 + -1 == 0) { if (piVar1 == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); return; } return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_000166a8(void) { int *piVar1; int iVar2; piVar1 = DAT_00024a3c; iVar2 = *DAT_00024a3c; *DAT_00024a3c = iVar2 + -1; if (iVar2 + -1 == 0) { if (piVar1 == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); return; } return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00016700(void) { int *piVar1; int iVar2; piVar1 = DAT_00024a34; iVar2 = *DAT_00024a34; *DAT_00024a34 = iVar2 + -1; if (iVar2 + -1 == 0) { if (piVar1 == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); return; } return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00016758(void) { int *piVar1; int iVar2; piVar1 = DAT_00024a30; iVar2 = *DAT_00024a30; *DAT_00024a30 = iVar2 + -1; if (iVar2 + -1 == 0) { if (piVar1 == _DAT_00049358) { _DAT_00049358 = (int *)0x0; } deleteSelf(); return; } return; } undefined4 * FUN_00016a60(undefined4 *puParm1) undefined4 * FUN_00016a9c(undefined4 *puParm1) { *puParm1 = 0x49078; ~QEvent((QEvent *)puParm1); operator.delete(puParm1); return puParm1; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00016ae0(int iParm1,undefined4 uParm2) // ???CAM_UI_ACS_MessageListener::removeEventHandler { char cVar1; char *pcVar2; char *pcVar3; pcVar2 = "src/CAM_UI_ACS_MessageListener.cpp"; cVar1 = 's'; pcVar3 = pcVar2; do { if (cVar1 == '/') { pcVar3 = pcVar2 + 1; } pcVar2 = pcVar2 + 1; cVar1 = *pcVar2; } while (cVar1 != 0); fprintf(_DAT_00049350 "{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener::removeEventHandler %p %d\n",1,pcVar3 ,0xa0,uParm2,*(undefined4 *)(iParm1 + 0x3c)); remove((void *)(iParm1 + 0x24)); return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00016b88(int iParm1) // ???CAM_UI_ACS_MessageListener::flushmsgQ { char cVar1; ssize_t sVar2; char *pcVar3; char *pcVar4; undefined auStack552 [532]; pcVar3 = "src/CAM_UI_ACS_MessageListener.cpp"; cVar1 = 's'; pcVar4 = pcVar3; do { if (cVar1 == '/') { pcVar4 = pcVar3 + 1; } pcVar3 = pcVar3 + 1; cVar1 = *pcVar3; } while (cVar1 != 0); fprintf(_DAT_00049350,"{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener::flushmsgQ\n",1,pcVar4, 0xab); do { sVar2 = msgrcv(*(int *)(iParm1 + 0x44),auStack552,0x208,0,0x800); } while (0 < sVar2); return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00016c40(void *pvParm1) // ???CAM_UI_ACS_MessageListener::start { char cVar1; int iVar2; char *pcVar3; char *pcVar4; bool bVar5; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; cVar1 = 's'; bVar5 = true; pcVar3 = pcVar4; while (bVar5) { if (cVar1 == '/') { pcVar3 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar5 = cVar1 != 0; } fprintf(_DAT_00049350,"{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener::start\n",1,pcVar3,0xbb ); iVar2 = pthread_create((pthread_t *)((int)pvParm1 + 0x5c),(pthread_attr_t *)0x0, (void *(*)(void *))(undefined *)0x2deb8,pvParm1); if (iVar2 != 0) { cVar1 = 's'; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar5 = true; pcVar3 = pcVar4; while (bVar5) { if (cVar1 == '/') { pcVar3 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar5 = cVar1 != 0; } fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# CRITICAL\tCAM_UI_ACS_MessageListener::start pthread_create failed\n", 1,pcVar3,0xc1); } return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 FUN_00016d4c(QEvent *pQParm1,int iParm2) // ???In CAM_UI_ACS_MessageListener::event { char cVar1; undefined4 uVar2; char *pcVar3; char *pcVar4; bool bVar5; pcVar3 = "src/CAM_UI_ACS_MessageListener.cpp"; cVar1 = 's'; bVar5 = true; pcVar4 = pcVar3; while (bVar5) { if (cVar1 == '/') { pcVar4 = pcVar3 + 1; } pcVar3 = pcVar3 + 1; cVar1 = *pcVar3; bVar5 = cVar1 != 0; } fprintf(_DAT_00049350,"{%d} %s:%d\t#ACS# DEBUG\tIn CAM_UI_ACS_MessageListener::event %p\n",1, pcVar4,200,iParm2); if (*(int *)(iParm2 + 4) == 0x33e7) { lock(); *(int *)(pQParm1 + 0x58) = *(int *)(pQParm1 + 0x58) + -1; unlock(); cVar1 = 's'; pcVar3 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar5 = true; pcVar4 = pcVar3; while (bVar5) { if (cVar1 == '/') { pcVar4 = pcVar3 + 1; } pcVar3 = pcVar3 + 1; cVar1 = *pcVar3; bVar5 = cVar1 != 0; } fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# DEBUG\tIn CAM_UI_ACS_MessageListener::event num_message_unhandled%d\n" ,1,pcVar4,0xd0,*(undefined4 *)(pQParm1 + 0x58)); if (*(int *)(pQParm1 + 0x48) == 0) { cVar1 = 's'; pcVar3 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar5 = true; pcVar4 = pcVar3; while (bVar5) { if (cVar1 == '/') { pcVar4 = pcVar3 + 1; } pcVar3 = pcVar3 + 1; cVar1 = *pcVar3; bVar5 = cVar1 != 0; } fprintf(_DAT_00049350,"{%d} %s:%d\t#ACS# DEBUG\tIn CAM_UI_ACS_MessageListener::eventtype %d\n" ,1,pcVar4,0xd6,*(undefined4 *)(iParm2 + 0x10)); FUN_00019910(pQParm1,*(undefined4 *)(iParm2 + 0x10)); // activate_signal "handleACSEvent(int)" event(pQParm1); uVar2 = 1; } else { uVar2 = 1; } } else { uVar2 = event(pQParm1); } return uVar2; } undefined4 * FUN_00016f18(undefined4 *puParm1,undefined4 uParm2) undefined4 * FUN_00017560(undefined4 *puParm1,undefined4 uParm2) { QCustomEvent((QCustomEvent *)puParm1,0x33e7); *puParm1 = 0x49098; puParm1[4] = uParm2; return puParm1; } undefined4 * FUN_000175a4(undefined4 *puParm1) undefined4 * FUN_000175e0(undefined4 *puParm1) undefined4 * FUN_0001761c(undefined4 *puParm1) { *puParm1 = 0x49078; ~QEvent((QEvent *)puParm1); operator.delete(puParm1); return puParm1; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00017660(int iParm1,undefined4 uParm2) // CAM_UI_ACS_MessageListener::addEventHandler { char cVar1; char *pcVar2; char *pcVar3; undefined4 uVar4; bool bVar5; pcVar2 = "src/CAM_UI_ACS_MessageListener.cpp"; cVar1 = 's'; bVar5 = true; pcVar3 = pcVar2; while (bVar5) { if (cVar1 == '/') { pcVar3 = pcVar2 + 1; } pcVar2 = pcVar2 + 1; cVar1 = *pcVar2; bVar5 = cVar1 != 0; } uVar4 = *(undefined4 *)(iParm1 + 0x3c); fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener::addEventHandler %p %d\n",1,pcVar3, 0x91,uParm2,uVar4); append((void *)(iParm1 + 0x24)); if (*(int *)(iParm1 + 0x3c) == 0) { return; } cVar1 = 's'; pcVar2 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar5 = true; pcVar3 = pcVar2; while (bVar5) { if (cVar1 == '/') { pcVar3 = pcVar2 + 1; } pcVar2 = pcVar2 + 1; cVar1 = *pcVar2; bVar5 = cVar1 != 0; } fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener::addEventHandler release semaphore\n" ,1,pcVar3,0x98,uParm2,uVar4); operator--(*(QSemaphore **)(iParm1 + 0x4c),0); return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 * FUN_00017784(undefined4 *puParm1) // CAM_UI_ACS_MessageListener destructor { char cVar1; int iVar2; int iVar3; char *pcVar4; undefined4 local_2c; int iVar5; char *pcVar6; int iVar7; bool bVar8; int iVar9; *puParm1 = 0x492a8; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; cVar1 = 's'; pcVar6 = pcVar4; while (cVar1 != 0) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; } local_2c = puParm1[0x17]; fprintf(_DAT_00049350,"{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener destructor %d\n",1, pcVar6,0x61,local_2c); puParm1[0x12] = 1; iVar3 = msgctl(puParm1[0x11],0,(msqid_ds *)0x0); if (iVar3 < 0) { cVar1 = 's'; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar8 = true; pcVar6 = pcVar4; while (bVar8) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar8 = cVar1 != 0; } fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# CRITICAL\tCAM_UI_ACS_MessageListener destructor deleting msg_queuefailed\n" ,1,pcVar6,0x69,local_2c); } iVar3 = pthread_cancel(puParm1[0x17]); if (iVar3 != 0) { cVar1 = 's'; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar8 = true; pcVar6 = pcVar4; while (bVar8) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar8 = cVar1 != 0; } fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# CRITICAL\tCAM_UI_ACS_MessageListener::run pthread_cancel failed %d\n" ,1,pcVar6,0x71,iVar3); } iVar3 = pthread_join(puParm1[0x17],(void **)0x0); if (iVar3 != 0) { cVar1 = 's'; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar8 = true; pcVar6 = pcVar4; while (bVar8) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar8 = cVar1 != 0; } fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# CRITICAL\tCAM_UI_ACS_MessageListener::run pthread_join failed %d\n",1 ,pcVar6,0x77,iVar3); } cVar1 = 's'; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar8 = true; pcVar6 = pcVar4; while (bVar8) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar8 = cVar1 != 0; } iVar5 = puParm1[0x16]; fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener destructor num_message_unhandled%d\n" ,1,pcVar6,0x7a,iVar5); iVar3 = puParm1[0x16]; iVar7 = iVar3; iVar2 = iVar3; while (iVar9 = iVar7, 0 < iVar2) { cVar1 = 's'; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar8 = true; iVar3 = iVar3 + -1; pcVar6 = pcVar4; while (bVar8) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar8 = cVar1 != 0; } fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener loop num_message_unhandled %d,loopcountdown %d\n" ,1,pcVar6,0x80,iVar9,iVar3); processEvents(); iVar7 = puParm1[0x16]; iVar5 = iVar9; iVar2 = iVar7; if (0 < iVar7) { iVar5 = iVar9; iVar2 = iVar3; } } if ((int *)puParm1[0x13] != (int *)0x0) { (**(code **)(*(int *)puParm1[0x13] + 4))(); } _DAT_000494b8 = 0; pcVar6 = "src/CAM_UI_ACS_MessageListener.cpp"; cVar1 = 's'; pcVar4 = pcVar6; while (cVar1 != 0) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; } fprintf(_DAT_00049350,"{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener destructor completed\n" ,1,pcVar6,0x8a,iVar5); ~QMutex((QMutex *)(puParm1 + 0x14)); puParm1[9] = 0x490b8; clear(); ~QGList((QGList *)(puParm1 + 9)); ~QObject((QObject *)puParm1); operator.delete(puParm1); return puParm1; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 * FUN_00017b58(undefined4 *puParm1) // CAM_UI_ACS_MessageListener destructor { char cVar1; int iVar2; int iVar3; char *pcVar4; undefined4 local_2c; int iVar5; char *pcVar6; int iVar7; bool bVar8; int iVar9; *puParm1 = 0x492a8; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; cVar1 = 's'; pcVar6 = pcVar4; while (cVar1 != 0) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; } local_2c = puParm1[0x17]; fprintf(_DAT_00049350,"{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener destructor %d\n",1, pcVar6,0x61,local_2c); puParm1[0x12] = 1; iVar3 = msgctl(puParm1[0x11],0,(msqid_ds *)0x0); if (iVar3 < 0) { cVar1 = 's'; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar8 = true; pcVar6 = pcVar4; while (bVar8) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar8 = cVar1 != 0; } fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# CRITICAL\tCAM_UI_ACS_MessageListener destructor deleting msg_queuefailed\n" ,1,pcVar6,0x69,local_2c); } iVar3 = pthread_cancel(puParm1[0x17]); if (iVar3 != 0) { cVar1 = 's'; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar8 = true; pcVar6 = pcVar4; while (bVar8) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar8 = cVar1 != 0; } fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# CRITICAL\tCAM_UI_ACS_MessageListener::run pthread_cancel failed %d\n" ,1,pcVar6,0x71,iVar3); } iVar3 = pthread_join(puParm1[0x17],(void **)0x0); if (iVar3 != 0) { cVar1 = 's'; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar8 = true; pcVar6 = pcVar4; while (bVar8) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar8 = cVar1 != 0; } fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# CRITICAL\tCAM_UI_ACS_MessageListener::run pthread_join failed %d\n",1 ,pcVar6,0x77,iVar3); } cVar1 = 's'; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar8 = true; pcVar6 = pcVar4; while (bVar8) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar8 = cVar1 != 0; } iVar5 = puParm1[0x16]; fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener destructor num_message_unhandled%d\n" ,1,pcVar6,0x7a,iVar5); iVar3 = puParm1[0x16]; iVar7 = iVar3; iVar2 = iVar3; while (iVar9 = iVar7, 0 < iVar2) { cVar1 = 's'; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar8 = true; iVar3 = iVar3 + -1; pcVar6 = pcVar4; while (bVar8) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar8 = cVar1 != 0; } fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener loop num_message_unhandled %d,loopcountdown %d\n" ,1,pcVar6,0x80,iVar9,iVar3); processEvents(); iVar7 = puParm1[0x16]; iVar5 = iVar9; iVar2 = iVar7; if (0 < iVar7) { iVar5 = iVar9; iVar2 = iVar3; } } if ((int *)puParm1[0x13] != (int *)0x0) { (**(code **)(*(int *)puParm1[0x13] + 4))(); } _DAT_000494b8 = 0; pcVar6 = "src/CAM_UI_ACS_MessageListener.cpp"; cVar1 = 's'; pcVar4 = pcVar6; while (cVar1 != 0) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; } fprintf(_DAT_00049350,"{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener destructor completed\n" ,1,pcVar6,0x8a,iVar5); ~QMutex((QMutex *)(puParm1 + 0x14)); puParm1[9] = 0x490b8; clear(); ~QGList((QGList *)(puParm1 + 9)); ~QObject((QObject *)puParm1); return puParm1; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 * FUN_00017f24(undefined4 *puParm1) // CAM_UI_ACS_MessageListener destructor { char cVar1; int iVar2; int iVar3; char *pcVar4; undefined4 local_2c; int iVar5; char *pcVar6; int iVar7; bool bVar8; int iVar9; *puParm1 = 0x492a8; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; cVar1 = 's'; pcVar6 = pcVar4; while (cVar1 != 0) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; } local_2c = puParm1[0x17]; fprintf(_DAT_00049350,"{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener destructor %d\n",1, pcVar6,0x61,local_2c); puParm1[0x12] = 1; iVar3 = msgctl(puParm1[0x11],0,(msqid_ds *)0x0); if (iVar3 < 0) { cVar1 = 's'; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar8 = true; pcVar6 = pcVar4; while (bVar8) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar8 = cVar1 != 0; } fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# CRITICAL\tCAM_UI_ACS_MessageListener destructor deleting msg_queuefailed\n" ,1,pcVar6,0x69,local_2c); } iVar3 = pthread_cancel(puParm1[0x17]); if (iVar3 != 0) { cVar1 = 's'; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar8 = true; pcVar6 = pcVar4; while (bVar8) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar8 = cVar1 != 0; } fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# CRITICAL\tCAM_UI_ACS_MessageListener::run pthread_cancel failed %d\n" ,1,pcVar6,0x71,iVar3); } iVar3 = pthread_join(puParm1[0x17],(void **)0x0); if (iVar3 != 0) { cVar1 = 's'; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar8 = true; pcVar6 = pcVar4; while (bVar8) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar8 = cVar1 != 0; } fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# CRITICAL\tCAM_UI_ACS_MessageListener::run pthread_join failed %d\n",1 ,pcVar6,0x77,iVar3); } cVar1 = 's'; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar8 = true; pcVar6 = pcVar4; while (bVar8) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar8 = cVar1 != 0; } iVar5 = puParm1[0x16]; fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener destructor num_message_unhandled%d\n" ,1,pcVar6,0x7a,iVar5); iVar3 = puParm1[0x16]; iVar7 = iVar3; iVar2 = iVar3; while (iVar9 = iVar7, 0 < iVar2) { cVar1 = 's'; pcVar4 = "src/CAM_UI_ACS_MessageListener.cpp"; bVar8 = true; iVar3 = iVar3 + -1; pcVar6 = pcVar4; while (bVar8) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; bVar8 = cVar1 != 0; } fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener loop num_message_unhandled %d,loopcountdown %d\n" ,1,pcVar6,0x80,iVar9,iVar3); processEvents(); iVar7 = puParm1[0x16]; iVar5 = iVar9; iVar2 = iVar7; if (0 < iVar7) { iVar5 = iVar9; iVar2 = iVar3; } } if ((int *)puParm1[0x13] != (int *)0x0) { (**(code **)(*(int *)puParm1[0x13] + 4))(); } _DAT_000494b8 = 0; pcVar6 = "src/CAM_UI_ACS_MessageListener.cpp"; cVar1 = 's'; pcVar4 = pcVar6; while (cVar1 != 0) { if (cVar1 == '/') { pcVar6 = pcVar4 + 1; } pcVar4 = pcVar4 + 1; cVar1 = *pcVar4; } fprintf(_DAT_00049350,"{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener destructor completed\n" ,1,pcVar6,0x8a,iVar5); ~QMutex((QMutex *)(puParm1 + 0x14)); puParm1[9] = 0x490b8; clear(); ~QGList((QGList *)(puParm1 + 9)); ~QObject((QObject *)puParm1); return puParm1; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 * FUN_000182f0(undefined4 *puParm1) // CAM_UI_ACS_MessageListener constructor msgQ creationsuccessful { char cVar1; key_t __key; int iVar2; QSemaphore *this; char *pcVar3; char *pcVar4; QObject((QObject *)puParm1,(QObject *)0x0,(char *)0x0); *puParm1 = 0x492a8; QGList((QGList *)(puParm1 + 9)); puParm1[9] = 0x490b8; puParm1[0x12] = 0; puParm1[0x13] = 0; QMutex((QMutex *)(puParm1 + 0x14),false); *(undefined *)(puParm1 + 0x18) = 0; __key = ftok("/usr/bin/apps_acs",0xffe0); iVar2 = msgget(__key,0x3b0); puParm1[0x11] = iVar2; if (iVar2 != -1) { cVar1 = 's'; pcVar3 = "src/CAM_UI_ACS_MessageListener.cpp"; pcVar4 = pcVar3; do { if (cVar1 == '/') { pcVar4 = pcVar3 + 1; } pcVar3 = pcVar3 + 1; cVar1 = *pcVar3; } while (cVar1 != 0); fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener constructor msgQ creationsuccessful\n" ,1,pcVar4,0x50); FUN_00016b88(puParm1); // ???CAM_UI_ACS_MessageListener::flushmsgQ *(undefined *)(puParm1 + 10) = 0; puParm1[0x17] = 0; puParm1[0x16] = 0; this = (QSemaphore *)operator.new(8); QSemaphore(this,1); *(QSemaphore **)(puParm1 + 0x13) = this; operator++(this,0); return puParm1; } cVar1 = 's'; pcVar3 = "src/CAM_UI_ACS_MessageListener.cpp"; pcVar4 = pcVar3; do { if (cVar1 == '/') { pcVar4 = pcVar3 + 1; } pcVar3 = pcVar3 + 1; cVar1 = *pcVar3; } while (cVar1 != 0); fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# CRITICAL\tCAM_UI_ACS_MessageListener constructor opening msg_queuefailed\n" ,1,pcVar4,0x4c); /* WARNING: Subroutine does not return */ _exit(0); } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void * FUN_000184bc(void) // CAM_UI_ACS_MessageListener get_acsMessageListener { char cVar1; void *pvVar2; char *pcVar3; char *pcVar4; pcVar3 = "src/CAM_UI_ACS_MessageListener.cpp"; cVar1 = 's'; pcVar4 = pcVar3; do { if (cVar1 == '/') { pcVar4 = pcVar3 + 1; } pcVar3 = pcVar3 + 1; cVar1 = *pcVar3; } while (cVar1 != 0); fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener get_acsMessageListener %p\n",1,pcVar4 ,0x33,_DAT_000494b8); pvVar2 = _DAT_000494b8; if (_DAT_000494b8 == (void *)0x0) { pvVar2 = operator.new(100); FUN_000182f0(); // CAM_UI_ACS_MessageListener constructor msgQ creationsuccessful } _DAT_000494b8 = pvVar2; return pvVar2; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 * FUN_00018584(undefined4 *puParm1) // CAM_UI_ACS_MessageListener constructor msgQ creationsuccessful { char cVar1; key_t __key; int iVar2; QSemaphore *this; char *pcVar3; char *pcVar4; QObject((QObject *)puParm1,(QObject *)0x0,(char *)0x0); *puParm1 = 0x492a8; QGList((QGList *)(puParm1 + 9)); puParm1[9] = 0x490b8; puParm1[0x12] = 0; puParm1[0x13] = 0; QMutex((QMutex *)(puParm1 + 0x14),false); *(undefined *)(puParm1 + 0x18) = 0; __key = ftok("/usr/bin/apps_acs",0xffe0); iVar2 = msgget(__key,0x3b0); puParm1[0x11] = iVar2; if (iVar2 != -1) { cVar1 = 's'; pcVar3 = "src/CAM_UI_ACS_MessageListener.cpp"; pcVar4 = pcVar3; do { if (cVar1 == '/') { pcVar4 = pcVar3 + 1; } pcVar3 = pcVar3 + 1; cVar1 = *pcVar3; } while (cVar1 != 0); fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# DEBUG\tCAM_UI_ACS_MessageListener constructor msgQ creationsuccessful\n" ,1,pcVar4,0x50); FUN_00016b88(puParm1); // ???CAM_UI_ACS_MessageListener::flushmsgQ *(undefined *)(puParm1 + 10) = 0; puParm1[0x17] = 0; puParm1[0x16] = 0; this = (QSemaphore *)operator.new(8); QSemaphore(this,1); *(QSemaphore **)(puParm1 + 0x13) = this; operator++(this,0); return puParm1; } cVar1 = 's'; pcVar3 = "src/CAM_UI_ACS_MessageListener.cpp"; pcVar4 = pcVar3; do { if (cVar1 == '/') { pcVar4 = pcVar3 + 1; } pcVar3 = pcVar3 + 1; cVar1 = *pcVar3; } while (cVar1 != 0); fprintf(_DAT_00049350, "{%d} %s:%d\t#ACS# CRITICAL\tCAM_UI_ACS_MessageListener constructor opening msg_queuefailed\n" ,1,pcVar4,0x4c); /* WARNING: Subroutine does not return */ _exit(0); } undefined4 * FUN_0001875c(undefined4 *puParm1) undefined4 * FUN_000187a0(undefined4 *puParm1) { *puParm1 = 0x490b8; clear(); ~QGList((QGList *)puParm1); operator.delete(puParm1); return puParm1; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ char * FUN_00018844(char *pcParm1) char * FUN_00018898(char *pcParm1) { translate(pcParm1,_DAT_00049368,"CAM_UI_EngineInterface"); return pcParm1; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ Access * FUN_00018e54(undefined uParm1) { undefined *puVar1; undefined4 uVar2; undefined *puVar3; undefined4 uVar4; undefined *puVar5; undefined4 uVar6; undefined *puVar7; undefined4 uVar8; undefined *puVar9; undefined4 uVar10; undefined *puVar11; undefined4 uVar12; undefined *puVar13; undefined4 uVar14; undefined *puVar15; undefined4 uVar16; undefined *puVar17; undefined4 uVar18; undefined *puVar19; undefined4 uVar20; undefined *puVar21; undefined4 uVar22; undefined *puVar23; undefined4 uVar24; undefined *puVar25; undefined4 uVar26; undefined4 *puVar27; undefined4 *puVar28; char *__s1; if (_DAT_000494c0 == (Access *)0x0) { __s1 = (char *)className(); if (__s1 == (char *)0x0) { __s1 = "QObject"; } else { __s1 = (char *)strcmp(__s1,"QObject"); } if (__s1 != (char *)0x0) { badSuperclassWarning("CAM_UI_EngineInterface","QObject"); } if (_DAT_000494c0 == (Access *)0x0) { staticMetaObject(); uVar4 = DAT_00024894; puVar3 = PTR_FUN_00024890; uVar2 = DAT_0002488c; puVar1 = PTR_FUN_00024888; puVar27 = (undefined4 *)new_metadata(2); puVar28 = (undefined4 *)new_metaaccess(2); *puVar27 = 0x1bfec; *(undefined **)(puVar27 + 1) = puVar1; puVar27[2] = uVar2; puVar27[3] = 0x1bffc; *puVar28 = 2; *(undefined **)(puVar27 + 4) = puVar3; puVar27[5] = uVar4; uVar2 = DAT_0002489c; puVar1 = PTR_FUN_00024898; puVar28[1] = 1; uVar26 = DAT_000248fc; puVar25 = PTR_FUN_000248f8; uVar24 = DAT_000248f4; puVar23 = PTR_FUN_000248f0; uVar22 = DAT_000248ec; puVar21 = PTR_FUN_000248e8; uVar20 = DAT_000248e4; puVar19 = PTR_FUN_000248e0; uVar18 = DAT_000248dc; puVar17 = PTR_FUN_000248d8; uVar16 = DAT_000248d4; puVar15 = PTR_FUN_000248d0; uVar14 = DAT_000248cc; puVar13 = PTR_FUN_000248c8; uVar12 = DAT_000248c4; puVar11 = PTR_FUN_000248c0; uVar10 = DAT_000248bc; puVar9 = PTR_FUN_000248b8; uVar8 = DAT_000248b4; puVar7 = PTR_FUN_000248b0; uVar6 = DAT_000248ac; puVar5 = PTR_FUN_000248a8; uVar4 = DAT_000248a4; puVar3 = PTR_FUN_000248a0; puVar28 = (undefined4 *)new_metadata(0xd); *puVar28 = 0x1c014; *(undefined **)(puVar28 + 1) = puVar1; puVar28[2] = uVar2; puVar28[3] = 0x1c030; *(undefined **)(puVar28 + 4) = puVar3; puVar28[5] = uVar4; puVar28[6] = 0x1c044; *(undefined **)(puVar28 + 7) = puVar5; puVar28[8] = uVar6; puVar28[9] = 0x1c05c; *(undefined **)(puVar28 + 10) = puVar9; puVar28[0xb] = uVar10; puVar28[0xc] = 0x1c074; *(undefined **)(puVar28 + 0xd) = puVar7; puVar28[0xe] = uVar8; puVar28[0xf] = 0x1c098; *(undefined **)(puVar28 + 0x10) = puVar11; puVar28[0x11] = uVar12; puVar28[0x12] = 0x1c0c4; *(undefined **)(puVar28 + 0x13) = puVar13; puVar28[0x14] = uVar14; puVar28[0x15] = 0x1c0f4; *(undefined **)(puVar28 + 0x16) = puVar15; puVar28[0x17] = uVar16; puVar28[0x18] = 0x1c108; *(undefined **)(puVar28 + 0x19) = puVar17; puVar28[0x1a] = uVar18; puVar28[0x1b] = 0x1c118; *(undefined **)(puVar28 + 0x1c) = puVar19; puVar28[0x1d] = uVar20; puVar28[0x1e] = 0x1c12c; *(undefined **)(puVar28 + 0x1f) = puVar21; puVar28[0x20] = uVar22; puVar28[0x21] = 0x1c140; *(undefined **)(puVar28 + 0x22) = puVar23; puVar28[0x23] = uVar24; puVar28[0x24] = 0x1c164; *(undefined **)(puVar28 + 0x25) = puVar25; puVar28[0x26] = uVar26; _DAT_000494c0 = (Access *) new_metaobject("CAM_UI_EngineInterface","QObject",(QMetaData *)puVar27,2, (QMetaData *)puVar28,0xd,(QClassInfo *)0x0,0); set_slot_access(_DAT_000494c0); } return _DAT_000494c0; } return (Access *)_uParm1; } void FUN_00018ee0(char *pcParm1) void FUN_00018f04(char *pcParm1) void FUN_00018f78(char *pcParm1) void FUN_00018fc4(char *pcParm1) void FUN_00018fe8(char *pcParm1) { activate_signal(pcParm1); return; } void FUN_00018f28(char *pcParm1) // activate_signal "recElapsedBytes(long)" void FUN_00018f50(char *pcParm1) // activate_signal "recElapsedBytes(long)" { activate_signal(pcParm1,(long)"recElapsedBytes(long)"); return; } void FUN_00018f9c(char *pcParm1) // activate_signal "errorType(int)" { activate_signal(pcParm1,(int)"errorType(int)"); return; } void FUN_0001900c(char *pcParm1,undefined4 uParm2) { QGList *pQVar1; int iVar2; code *pcVar3; int *piVar4; int iVar5; QGListIterator aQStack56 [4]; int **local_34; code *local_30; uint local_2c; code *local_28; uint local_24; pQVar1 = (QGList *)receivers(pcParm1); if ((pQVar1 != (QGList *)0x0) && ((pcParm1[4] & 0x20U) == 0)) { QGListIterator(aQStack56,pQVar1); LAB_00019064: if (local_34 != (int **)0x0) { while( true ) { piVar4 = *local_34; if (piVar4 == (int *)0x0) goto LAB_000190dc; operator++(aQStack56); iVar2 = piVar4[4]; iVar5 = *piVar4; *(char **)(iVar5 + 0x20) = pcParm1; if (iVar2 == 0) break; if (iVar2 != 1) goto LAB_00019064; local_30 = (code *)piVar4[1]; local_2c = piVar4[2]; pcVar3 = local_30; if ((local_2c & 1) != 0) { pcVar3 = *(code **)(local_30 + *(int *)(iVar5 + ((int)local_2c >> 1))); } (*pcVar3)(iVar5 + ((int)local_2c >> 1),uParm2); if (local_34 == (int **)0x0) goto LAB_000190dc; } local_28 = (code *)piVar4[1]; local_24 = piVar4[2]; pcVar3 = local_28; if ((local_24 & 1) != 0) { pcVar3 = *(code **)(local_28 + *(int *)(iVar5 + ((int)local_24 >> 1))); } (*pcVar3)(iVar5 + ((int)local_24 >> 1)); goto LAB_00019064; } LAB_000190dc: ~QGListIterator(aQStack56); } return; } void FUN_00019120(char *pcParm1,undefined4 uParm2) { QGList *pQVar1; int iVar2; code *pcVar3; int *piVar4; int iVar5; QGListIterator aQStack56 [4]; int **local_34; code *local_30; uint local_2c; code *local_28; uint local_24; pQVar1 = (QGList *)receivers(pcParm1); if ((pQVar1 != (QGList *)0x0) && ((pcParm1[4] & 0x20U) == 0)) { QGListIterator(aQStack56,pQVar1); LAB_00019178: if (local_34 != (int **)0x0) { while( true ) { piVar4 = *local_34; if (piVar4 == (int *)0x0) goto LAB_000191f0; operator++(aQStack56); iVar2 = piVar4[4]; iVar5 = *piVar4; *(char **)(iVar5 + 0x20) = pcParm1; if (iVar2 == 0) break; if (iVar2 != 1) goto LAB_00019178; local_30 = (code *)piVar4[1]; local_2c = piVar4[2]; pcVar3 = local_30; if ((local_2c & 1) != 0) { pcVar3 = *(code **)(local_30 + *(int *)(iVar5 + ((int)local_2c >> 1))); } (*pcVar3)(iVar5 + ((int)local_2c >> 1),uParm2); if (local_34 == (int **)0x0) goto LAB_000191f0; } local_28 = (code *)piVar4[1]; local_24 = piVar4[2]; pcVar3 = local_28; if ((local_24 & 1) != 0) { pcVar3 = *(code **)(local_28 + *(int *)(iVar5 + ((int)local_24 >> 1))); } (*pcVar3)(iVar5 + ((int)local_24 >> 1)); goto LAB_00019178; } LAB_000191f0: ~QGListIterator(aQStack56); } return; } void FUN_00019234(char *pcParm1,undefined4 uParm2,int iParm3) { QGList *pQVar1; int iVar2; int iVar3; int **ppiVar4; undefined4 ***pppuVar5; undefined4 ***pppuVar6; int *piVar7; int iVar8; bool bVar9; QGListIterator aQStack72 [4]; int **local_44; undefined4 ***local_40; uint local_3c; int *local_38; uint local_34; int *local_30; uint local_2c; iVar2 = iParm3; pQVar1 = (QGList *)receivers(pcParm1); if ((pQVar1 != (QGList *)0x0) && ((pcParm1[4] & 0x20U) == 0)) { QGListIterator(aQStack72,pQVar1); LAB_00019298: if (local_44 != (int **)0x0) { while( true ) { piVar7 = *local_44; if (piVar7 == (int *)0x0) goto LAB_00019310; operator++(aQStack72); iVar3 = piVar7[4]; iVar8 = *piVar7; *(char **)(iVar8 + 0x20) = pcParm1; if (iVar3 == 1) break; if (1 < iVar3) { if (iVar3 == 2) { bVar9 = (local_3c & 1) != 0; pppuVar5 = &local_40; if (bVar9) { iVar2 = *(int *)(iVar8 + ((int)local_3c >> 1)); pppuVar5 = local_40; } pppuVar6 = local_40; if (bVar9) { pppuVar6 = *(undefined4 ****)(iVar2 + (int)pppuVar5); } iVar2 = iParm3; (*(code *)pppuVar6)(iVar8 + ((int)local_3c >> 1),uParm2); } goto LAB_00019298; } if (iVar3 != 0) goto LAB_00019298; local_30 = (int *)piVar7[1]; local_2c = piVar7[2]; bVar9 = (local_2c & 1) != 0; ppiVar4 = (int **)(piVar7 + 1); if (bVar9) { ppiVar4 = (int **)local_30; } piVar7 = local_30; if (bVar9) { iVar2 = *(int *)(iVar8 + ((int)local_2c >> 1)); piVar7 = *(int **)(iVar2 + (int)ppiVar4); } (*(code *)piVar7)(iVar8 + ((int)local_2c >> 1)); if (local_44 == (int **)0x0) goto LAB_00019310; } local_38 = (int *)piVar7[1]; local_34 = piVar7[2]; bVar9 = (local_34 & 1) != 0; ppiVar4 = (int **)(piVar7 + 1); if (bVar9) { iVar2 = *(int *)(iVar8 + ((int)local_34 >> 1)); ppiVar4 = (int **)local_38; } piVar7 = local_38; if (bVar9) { piVar7 = *(int **)(iVar2 + (int)ppiVar4); } (*(code *)piVar7)(iVar8 + ((int)local_34 >> 1),uParm2); goto LAB_00019298; } LAB_00019310: ~QGListIterator(aQStack72); } return; } void FUN_0001939c(char *pcParm1,undefined4 uParm2,int iParm3) { QGList *pQVar1; int iVar2; int iVar3; int **ppiVar4; undefined4 ***pppuVar5; undefined4 ***pppuVar6; int *piVar7; int iVar8; bool bVar9; QGListIterator aQStack72 [4]; int **local_44; undefined4 ***local_40; uint local_3c; int *local_38; uint local_34; int *local_30; uint local_2c; iVar2 = iParm3; pQVar1 = (QGList *)receivers(pcParm1); if ((pQVar1 != (QGList *)0x0) && ((pcParm1[4] & 0x20U) == 0)) { QGListIterator(aQStack72,pQVar1); LAB_00019400: if (local_44 != (int **)0x0) { while( true ) { piVar7 = *local_44; if (piVar7 == (int *)0x0) goto LAB_00019478; operator++(aQStack72); iVar3 = piVar7[4]; iVar8 = *piVar7; *(char **)(iVar8 + 0x20) = pcParm1; if (iVar3 == 1) break; if (1 < iVar3) { if (iVar3 == 2) { bVar9 = (local_3c & 1) != 0; pppuVar5 = &local_40; if (bVar9) { iVar2 = *(int *)(iVar8 + ((int)local_3c >> 1)); pppuVar5 = local_40; } pppuVar6 = local_40; if (bVar9) { pppuVar6 = *(undefined4 ****)(iVar2 + (int)pppuVar5); } iVar2 = iParm3; (*(code *)pppuVar6)(iVar8 + ((int)local_3c >> 1),uParm2); } goto LAB_00019400; } if (iVar3 != 0) goto LAB_00019400; local_30 = (int *)piVar7[1]; local_2c = piVar7[2]; bVar9 = (local_2c & 1) != 0; ppiVar4 = (int **)(piVar7 + 1); if (bVar9) { ppiVar4 = (int **)local_30; } piVar7 = local_30; if (bVar9) { iVar2 = *(int *)(iVar8 + ((int)local_2c >> 1)); piVar7 = *(int **)(iVar2 + (int)ppiVar4); } (*(code *)piVar7)(iVar8 + ((int)local_2c >> 1)); if (local_44 == (int **)0x0) goto LAB_00019478; } local_38 = (int *)piVar7[1]; local_34 = piVar7[2]; bVar9 = (local_34 & 1) != 0; ppiVar4 = (int **)(piVar7 + 1); if (bVar9) { iVar2 = *(int *)(iVar8 + ((int)local_34 >> 1)); ppiVar4 = (int **)local_38; } piVar7 = local_38; if (bVar9) { piVar7 = *(int **)(iVar2 + (int)ppiVar4); } (*(code *)piVar7)(iVar8 + ((int)local_34 >> 1),uParm2); goto LAB_00019400; } LAB_00019478: ~QGListIterator(aQStack72); } return; } void FUN_00019504(char *pcParm1,undefined4 uParm2,int iParm3) { QGList *pQVar1; int iVar2; int iVar3; int **ppiVar4; undefined4 ***pppuVar5; undefined4 ***pppuVar6; int *piVar7; int iVar8; bool bVar9; QGListIterator aQStack72 [4]; int **local_44; undefined4 ***local_40; uint local_3c; int *local_38; uint local_34; int *local_30; uint local_2c; iVar2 = iParm3; pQVar1 = (QGList *)receivers(pcParm1); if ((pQVar1 != (QGList *)0x0) && ((pcParm1[4] & 0x20U) == 0)) { QGListIterator(aQStack72,pQVar1); LAB_00019568: if (local_44 != (int **)0x0) { while( true ) { piVar7 = *local_44; if (piVar7 == (int *)0x0) goto LAB_000195e0; operator++(aQStack72); iVar3 = piVar7[4]; iVar8 = *piVar7; *(char **)(iVar8 + 0x20) = pcParm1; if (iVar3 == 1) break; if (1 < iVar3) { if (iVar3 == 2) { bVar9 = (local_3c & 1) != 0; pppuVar5 = &local_40; if (bVar9) { iVar2 = *(int *)(iVar8 + ((int)local_3c >> 1)); pppuVar5 = local_40; } pppuVar6 = local_40; if (bVar9) { pppuVar6 = *(undefined4 ****)(iVar2 + (int)pppuVar5); } iVar2 = iParm3; (*(code *)pppuVar6)(iVar8 + ((int)local_3c >> 1),uParm2); } goto LAB_00019568; } if (iVar3 != 0) goto LAB_00019568; local_30 = (int *)piVar7[1]; local_2c = piVar7[2]; bVar9 = (local_2c & 1) != 0; ppiVar4 = (int **)(piVar7 + 1); if (bVar9) { ppiVar4 = (int **)local_30; } piVar7 = local_30; if (bVar9) { iVar2 = *(int *)(iVar8 + ((int)local_2c >> 1)); piVar7 = *(int **)(iVar2 + (int)ppiVar4); } (*(code *)piVar7)(iVar8 + ((int)local_2c >> 1)); if (local_44 == (int **)0x0) goto LAB_000195e0; } local_38 = (int *)piVar7[1]; local_34 = piVar7[2]; bVar9 = (local_34 & 1) != 0; ppiVar4 = (int **)(piVar7 + 1); if (bVar9) { iVar2 = *(int *)(iVar8 + ((int)local_34 >> 1)); ppiVar4 = (int **)local_38; } piVar7 = local_38; if (bVar9) { piVar7 = *(int **)(iVar2 + (int)ppiVar4); } (*(code *)piVar7)(iVar8 + ((int)local_34 >> 1),uParm2); goto LAB_00019568; } LAB_000195e0: ~QGListIterator(aQStack72); } return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_0001966c(void) { if (_DAT_00049370 == (char *)0x0) { return; } remove_ascii(_DAT_00049370,"CAM_UI_EngineInterface"); return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ char * FUN_0001970c(char *pcParm1) char * FUN_00019760(char *pcParm1) { translate(pcParm1,_DAT_00049368,"CAM_UI_ACS_MessageListener"); return pcParm1; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ Access * FUN_00019884(undefined uParm1) { undefined *puVar1; undefined4 uVar2; undefined4 *puVar3; char *__s1; if (_DAT_000494d0 == (Access *)0x0) { __s1 = (char *)className(); if (__s1 == (char *)0x0) { __s1 = "QObject"; } else { __s1 = (char *)strcmp(__s1,"QObject"); } if (__s1 != (char *)0x0) { badSuperclassWarning("CAM_UI_ACS_MessageListener","QObject"); } if (_DAT_000494d0 == (Access *)0x0) { staticMetaObject(); uVar2 = DAT_0002494c; puVar1 = PTR_FUN_00024948; puVar3 = (undefined4 *)new_metadata(1); *puVar3 = 0x1c1b0; *(undefined **)(puVar3 + 1) = puVar1; puVar3[2] = uVar2; _DAT_000494d0 = (Access *) new_metaobject("CAM_UI_ACS_MessageListener","QObject",(QMetaData *)0x0,0, (QMetaData *)puVar3,1,(QClassInfo *)0x0,0); set_slot_access(_DAT_000494d0); } return _DAT_000494d0; } return (Access *)_uParm1; } void FUN_00019910(char *pcParm1) // activate_signal "handleACSEvent(int)" { activate_signal(pcParm1,(int)"handleACSEvent(int)"); return; } /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00019938(void) { if (_DAT_00049370 == (char *)0x0) { return; } remove_ascii(_DAT_00049370,"CAM_UI_ACS_MessageListener"); return; } void FUN_000199b4(EVP_PKEY_CTX *pEParm1) { uint uVar1; uVar1 = 0; _init(pEParm1); do { (*(code *)(&__DT_INIT_ARRAY)[uVar1])(); uVar1 = uVar1 + 1; } while (uVar1 < 7); return; } void FUN_00019a68(undefined4 uParm1,undefined4 uParm2) { __cxa_atexit(uParm2,uParm1); return; }