Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //----- (00007764) --------------------------------------------------------
- // local variable allocation has failed, the output may be wrong!
- signed int __fastcall LauncherMainAndroid(int a1, int a2, int a3)
- {
- int v3; // r4
- int v4; // r5 OVERLAPPED
- int v6; // r7 OVERLAPPED
- int v8; // r9 OVERLAPPED
- int v10; // r11
- int v11; // lr
- int v12; // r6
- int v13; // r8
- char *v14; // r5
- int v15; // r0
- int v16; // r0
- int v17; // r0
- int v18; // r0
- int v19; // r0
- int v20; // r0
- void ***v21; // r4
- int v22; // r0
- int v23; // r0
- int v24; // r0
- int v25; // r0
- int v26; // r0
- int v27; // r0
- int v28; // r0
- int v29; // r0
- int v30; // r0
- int v31; // r0
- int v32; // r0
- int v33; // r0
- int v34; // r0
- int v35; // r0
- int *v36; // r5
- int v37; // r0
- int v38; // r3
- int v39; // r0
- void **v40; // r3
- int v41; // r2
- int v42; // r3
- int v43; // r1
- int v44; // r2
- int v45; // r3
- signed int v46; // r6
- int v47; // r0
- int *v48; // r6
- signed int v49; // r11
- char v50; // r3
- int *v51; // r2
- void ***v52; // r5
- int *v53; // r4
- int *v54; // r9
- __int16 *v55; // r3
- __int16 *v56; // r2
- int *v57; // r2
- int v58; // r1
- int v59; // r2
- int v60; // r3
- int v61; // r1
- int v62; // r2
- int v63; // r3
- int v64; // r1
- int v65; // r2
- int v66; // r3
- int v67; // r1
- int v68; // r2
- int v69; // r2
- int v70; // r3
- int v71; // r2
- int *v72; // r0
- int v73; // r1
- signed int v74; // r11
- char v75; // r3
- __int16 *v76; // r3
- __int16 *v77; // r2
- int v78; // r1
- int v79; // r2
- int v80; // r3
- int v81; // r1
- int v82; // r2
- int v83; // r3
- int v84; // r1
- int v85; // r2
- int v86; // r3
- int v87; // r3
- int v88; // r1
- int v89; // r2
- int v90; // r1
- int v91; // r2
- int v92; // r3
- int v93; // r3
- int v94; // r1
- int v95; // r2
- int v96; // r6
- __int16 *v98; // r2
- __int16 *v99; // r2
- int v100; // r0
- int v101; // r0
- int v102; // r0
- int v103; // r0
- int v104; // r0
- int v105; // r0
- int v106; // r0
- int v107; // r0
- int v108; // r0
- int v109; // r0
- int v110; // r0
- int v111; // r0
- int v112; // r0
- int v113; // r0
- int v114; // r0
- int v115; // r0
- int v116; // r0
- int v117; // r0
- int v118; // r0
- int v119; // r0
- int v120; // r0
- int v121; // r0
- int v122; // r0
- int v123; // r0
- int v124; // r0
- FILE *v125; // r8
- size_t v126; // r0
- signed int v127; // lr
- int v128; // r0
- int v129; // r0
- int *v130; // [sp+4h] [bp+4h]
- const char *v131; // [sp+8h] [bp+8h]
- const char *v132; // [sp+Ch] [bp+Ch]
- const char *v133; // [sp+10h] [bp+10h]
- const char *v134; // [sp+14h] [bp+14h]
- const char *v135; // [sp+18h] [bp+18h]
- void **v136; // [sp+1Ch] [bp+1Ch]
- Elf32_Dyn **v137; // [sp+20h] [bp+20h]
- int v138; // [sp+24h] [bp+24h]
- int *v139; // [sp+28h] [bp+28h]
- __int16 *v140; // [sp+2Ch] [bp+2Ch]
- __int16 *v141; // [sp+30h] [bp+30h]
- __int16 *v142; // [sp+34h] [bp+34h]
- int v143; // [sp+38h] [bp+38h]
- int v144; // [sp+3Ch] [bp+3Ch]
- int v145; // [sp+48h] [bp+48h]
- int v146; // [sp+B0h] [bp+B0h]
- int v147; // [sp+B4h] [bp+B4h]
- int v148; // [sp+C8h] [bp+C8h]
- int v149; // [sp+DCh] [bp+DCh]
- int v150; // [sp+E0h] [bp+E0h]
- int v151; // [sp+1B0h] [bp+1B0h]
- int v152; // [sp+1B4h] [bp+1B4h]
- int v153; // [sp+1C8h] [bp+1C8h]
- int v154; // [sp+1DCh] [bp+1DCh]
- int v155; // [sp+1E0h] [bp+1E0h]
- int v156; // [sp+314h] [bp+314h]
- __int64 v157; // [sp+318h] [bp+318h]
- __int64 v158; // [sp+320h] [bp+320h]
- __int64 v159; // [sp+328h] [bp+328h]
- int v160; // [sp+330h] [bp+330h]
- int v161; // [sp+334h] [bp+334h]
- v157 = *(_QWORD *)&v4;
- v12 = a2;
- v160 = v10;
- v161 = v11;
- v158 = *(_QWORD *)&v6;
- v13 = a1;
- v156 = v3;
- v159 = *(_QWORD *)&v8;
- dword_29248 = a3;
- v137 = &GLOBAL_OFFSET_TABLE_;
- strcpy((char *)&v144, "en_US.UTF-8");
- setenv("LC_ALL", (const char *)&v144, 1);
- setlocale(6, (const char *)&v144);
- v14 = setlocale(6, 0);
- if ( !v14 )
- v14 = "";
- if ( sub_11A70(v14, (const char *)&v144) )
- Warning("WARNING: setlocale('%s') failed, using locale:'%s'. International characters may not work.\n", &v144, v14);
- v15 = BuildCmdLine(v13, v12, 0);
- v16 = Plat_SetCommandLine(v15);
- v17 = CommandLine_Tier0(v16);
- if ( (*(int (**)(void))(*(_DWORD *)v17 + 12))() )
- sleep(5u);
- v18 = SpewOutputFunc((char *)&loc_6C04 + 1);
- v19 = Plat_VerifyHardwareKeyPrompt(v18);
- if ( !v19 )
- return -1;
- v20 = CommandLine_Tier0(v19);
- v21 = (void ***)&v151;
- v22 = (*(int (**)(void))(*(_DWORD *)v20 + 4))();
- v23 = CommandLine_Tier0(v22);
- v24 = (*(int (**)(void))(*(_DWORD *)v23 + 16))();
- v25 = CommandLine_Tier0(v24);
- v26 = (*(int (**)(void))(*(_DWORD *)v25 + 16))();
- v27 = CommandLine_Tier0(v26);
- v28 = (*(int (**)(void))(*(_DWORD *)v27 + 16))();
- sub_6D14(v28);
- v29 = stat("/tmp/hl2_relaunch", (struct stat *)&v151);
- if ( !v29 )
- v29 = unlink("/tmp/hl2_relaunch");
- v30 = CommandLine_Tier0(v29);
- if ( (*(int (**)(void))(*(_DWORD *)v30 + 12))() )
- {
- v31 = ((int (__fastcall *)(int, signed int, void *))*g_pVCR)(v143, 1, &unk_2A5B0);
- if ( !v31 )
- {
- v96 = -1;
- ((void (*)(const char *, ...))Error)("-vcrrecord: can't open '%s' for writing.\n", v143);
- return v96;
- }
- }
- else
- {
- v128 = CommandLine_Tier0(0);
- v31 = (*(int (**)(void))(*(_DWORD *)v128 + 12))();
- if ( v31 )
- {
- v31 = ((int (__fastcall *)(int, _DWORD, void *))*g_pVCR)(v143, 0, &unk_2A5B0);
- if ( !v31 )
- {
- v96 = -1;
- ((void (*)(const char *, ...))Error)("-vcrplayback: can't open '%s' for reading.\n", v143);
- return v96;
- }
- }
- }
- v32 = sub_6E7C(v31);
- v33 = CommandLine_Tier0(v32);
- v34 = (*(int (**)(void))(*(_DWORD *)v33 + 12))();
- if ( v34 )
- byte_2A5AC = 1;
- v35 = CommandLine_Tier0(v34);
- if ( !(*(int (**)(void))(*(_DWORD *)v35 + 12))() )
- {
- v129 = CommandLine_Tier0(0);
- (*(void (**)(void))(*(_DWORD *)v129 + 20))();
- }
- v36 = &v146;
- v135 = "-w";
- v134 = "-h";
- v133 = "-width";
- v132 = "-height";
- v37 = chdir(&byte_29358);
- v38 = *(_DWORD *)CommandLine_Tier0(v37);
- v131 = "-sw";
- v39 = (*(int (**)(void))(v38 + 12))();
- if ( v39 )
- LOBYTE(v39) = 1;
- v40 = &off_285D0;
- byte_2A5B4 = v39;
- v136 = &off_285D0;
- do
- {
- sub_18138(v21, 0, 0, (int)v40);
- *v21 = v136;
- sub_19FAC(v36, (int)v21, v41, v42); // ТУТ ВЫСТАВЛЯЕТСЯ УКАЗАТЕЛЬ v36
- v46 = sub_184A4((int)v36, v43, v44, v45); // ТУТ КРАШ
- v45 = sub_18110(v35);
- if ( v45 == 3 )
- {
- if ( v44 == 2 )
- {
- LABEL_77:
- v108 = 1;
- LABEL_78:
- v70 = CommandLine_Tier0(v45);
- v71 = (*(int (**)(void))(*(_DWORD *)v70 + 16))();
- v72 = CommandLine_Tier0(v71);
- v73 = (*(int (**)(void))(*(_DWORD *)v72 + 16))();
- v74 = CommandLine_Tier0(v73);
- v75 = (*(int (**)(void))(*(_DWORD *)v74 + 16))();
- v76 = CommandLine_Tier0(v75);
- v77 = (*(int (**)(void))(*(_DWORD *)v76 + 16))();
- v78 = CommandLine_Tier0(v77);
- v79 = (*(int (**)(void))(*(_DWORD *)v78 + 16))();
- v80 = CommandLine_Tier0(v79);
- v81 = (*(int (**)(void))(*(_DWORD *)v80 + 16))();
- v82 = CommandLine_Tier0(v81);
- v83 = (*(int (**)(void))(*(_DWORD *)v82 + 16))();
- v84 = CommandLine_Tier0(v83);
- v85 = (*(int (**)(void))(*(_DWORD *)v84 + 16))();
- v86 = CommandLine_Tier0(v85);
- v87 = (*(int (**)(void))(*(_DWORD *)v86 + 16))();
- v88 = CommandLine_Tier0(v87);
- v89 = (*(int (**)(void))(*(_DWORD *)v88 + 16))();
- v90 = CommandLine_Tier0(v89);
- v91 = (*(int (**)(void))(*(_DWORD *)v90 + 16))();
- v92 = CommandLine_Tier0(v91);
- v93 = (*(int (**)(void))(*(_DWORD *)v92 + 16))();
- v94 = CommandLine_Tier0(v93);
- (*(void (**)(void))(*(_DWORD *)v94 + 16))();
- goto LABEL_22;
- }
- }
- else if ( v44 == 4 )
- {
- goto LABEL_77;
- }
- v45 = (*(int (**)(void))(**(_DWORD **)v107[177] + 16))();
- v108 = v45;
- if ( !v45 )
- goto LABEL_78;
- LABEL_22:
- v46 = v107[190];
- v110 = &word_29074;
- v47 = &dword_2A5EC;
- v109 = v46;
- v48 = *((_WORD *)v35 + 30);
- v49 = dword_2A5EC;
- *v35 = v46 + 8;
- v50 = v35;
- v51 = v21;
- v112 = &word_29074;
- v111 = &word_29074;
- v52 = v50;
- while ( 1 )
- {
- v56 = v49 << 31;
- if ( !(v49 & 1) && _cxa_guard_acquire(&dword_2A5EC, v56) )
- {
- word_29074 = -1;
- word_29076 = -1;
- word_29078 = -1;
- _cxa_guard_release(&dword_2A5EC);
- }
- v53 = (_DWORD *)(&loc_FFFE + 1);
- if ( v48 == 0xFFFF )
- v54 = v110;
- else
- v54 = (__int16 *)v52[12];
- if ( v48 != 0xFFFF )
- v54 += 8 * v48;
- if ( (unsigned __int16)*v54 == 0xFFFF )
- break;
- v49 = dword_2A5EC;
- if ( !(dword_2A5EC & 1) )
- {
- if ( _cxa_guard_acquire(&dword_2A5EC, v56) )
- {
- v69 = v112;
- *v112 = -1;
- v69[1] = -1;
- v69[2] = -1;
- _cxa_guard_release(&dword_2A5EC);
- }
- v49 = dword_2A5EC;
- }
- if ( v48 == 0xFFFF )
- v55 = v111;
- else
- v55 = (__int16 *)v52[12];
- if ( v48 != 0xFFFF )
- v55 += 8 * v48;
- v48 = (unsigned __int16)*v55;
- }
- v57 = v52;
- if ( v48 != 0xFFFF )
- v47 = (_DWORD *)(&loc_FFFE + 1);
- v21 = v51;
- if ( v48 != 0xFFFF )
- v53 = &v121;
- v35 = v57;
- if ( v48 == 0xFFFF )
- {
- v53 = &v121;
- }
- else
- {
- do
- {
- free(*(void **)(v35[12] + 16 * v48 + 8));
- v48 = sub_93F0(v53, v48);
- }
- while ( (int *)v48 != v47 );
- }
- sub_8244(v53);
- sub_8244(v53);
- *((_WORD *)v35 + 32) = -1;
- sub_821C(&v122);
- *((_WORD *)v35 + 33) = -1;
- sub_821C(&v122);
- v35[9] = 0;
- v110 = &word_29074;
- sub_81F4(&v120);
- v35[10] = v35[6];
- v112 = &word_29074;
- sub_81F4(&v120);
- v35[4] = 0;
- v100 = &v119;
- v111 = &word_29074;
- sub_81CC(&v119);
- v58 = v100;
- v35[5] = v35[1];
- sub_81CC(v58);
- v59 = v109;
- v60 = *((_WORD *)v21 + 30);
- *v21 = (void **)(v109 + 8);
- v61 = dword_2A5EC;
- while ( 1 )
- {
- if ( !(v61 & 1) && _cxa_guard_acquire(&dword_2A5EC, v59) )
- {
- word_29074 = -1;
- word_29076 = -1;
- word_29078 = -1;
- _cxa_guard_release(&dword_2A5EC);
- }
- if ( v60 == 0xFFFF )
- v62 = v110;
- else
- v62 = (__int16 *)v21[12];
- if ( v60 != 0xFFFF )
- v62 += 8 * v60;
- if ( (unsigned __int16)*v62 == 0xFFFF )
- break;
- v61 = dword_2A5EC;
- if ( !(dword_2A5EC & 1) )
- {
- if ( _cxa_guard_acquire(&dword_2A5EC, v59) )
- {
- v68 = v112;
- *v112 = -1;
- v68[1] = -1;
- v68[2] = -1;
- _cxa_guard_release(&dword_2A5EC);
- }
- v61 = dword_2A5EC;
- }
- if ( v60 == 0xFFFF )
- v63 = v111;
- else
- v63 = (__int16 *)v21[12];
- if ( v60 != 0xFFFF )
- v63 += 8 * v60;
- v60 = (unsigned __int16)*v63;
- }
- if ( v60 == 0xFFFF )
- {
- v64 = &v126;
- }
- else
- {
- v64 = &v126;
- do
- {
- free(v21[12][4 * v60 + 2]);
- v60 = sub_93F0(&v126, v60);
- }
- while ( v60 != 0xFFFF );
- }
- sub_8244(v64);
- sub_8244(v64);
- *((_WORD *)v21 + 32) = -1;
- sub_821C(&v127);
- *((_WORD *)v21 + 33) = -1;
- sub_821C(&v127);
- v21[9] = 0;
- sub_81F4(&v125);
- v21[10] = v21[6];
- sub_81F4(&v125);
- v21[4] = 0;
- sub_81CC(&v124);
- v21[5] = v21[1];
- v65 = sub_81CC(&v124);
- }
- while ( v108 );
- sub_6E38(v65);
- v66 = stat("/tmp/hl2_relaunch", (struct stat *)&v117);
- if ( v66 || (v95 = fopen("/tmp/hl2_relaunch", "r")) == 0 )
- {
- v66 = 0;
- }
- else
- {
- v96 = fread(v35, 1u, 0x100u, v95);
- v97 = v96;
- if ( (signed int)v96 > 0 )
- {
- if ( v96 >= 0xFF )
- v97 = 255;
- *((_BYTE *)v35 + v97) = v108;
- sub_12440(v21, 260, "xdg-open \"%s\"", v35);
- system((const char *)v21);
- }
- fclose(v95);
- unlink("/tmp/hl2_relaunch");
- }
- return v66;
- }
- int __fastcall sub_19FAC(int a1, int a2, int a3, int a4)
- {
- __int64 v4; // r4@0
- int v5; // lr@0
- int v6; // r5@1
- int v7; // r4@1
- int result; // r0@1
- __int64 v9; // [sp+0h] [bp+0h]@1
- __int64 *v10; // [sp+8h] [bp+8h]@1
- int v11; // [sp+Ch] [bp+Ch]@1
- v9 = v4;
- v6 = a2;
- v10 = &v9;
- v11 = v5;
- v7 = a1;
- sub_17E6C(a1, 0, a3, a4);
- *(_DWORD *)(v7 + 84) = v6;
- result = v7;
- *(_DWORD *)(v7 + 80) = 0;
- *(_DWORD *)v7 = &off_289C8;
- return result;
- }
- // local variable allocation has failed, the output may be wrong!
- int __fastcall sub_17E6C(int a1, int a2, int a3, int a4)
- {
- int v5; // r5@0 OVERLAPPED
- int v7; // lr@0
- int v8; // r4@1
- int v9; // r6@1
- void *v10; // r2@1
- int result; // r0@1
- __int64 v12; // [sp+0h] [bp+0h]@1
- __int64 v13; // [sp+8h] [bp+8h]@1
- __int64 *v14; // [sp+10h] [bp+10h]@1
- int v15; // [sp+14h] [bp+14h]@1
- v12 = *(_QWORD *)&a4;
- v8 = a1;
- v13 = *(_QWORD *)&v5;
- v14 = &v12;
- v15 = v7;
- v9 = a2;
- *(_DWORD *)(a1 + 52) = 16;
- *(_DWORD *)(a1 + 4) = 0;
- *(_DWORD *)(a1 + 8) = 0;
- *(_DWORD *)(a1 + 12) = 0;
- *(_DWORD *)a1 = &off_28960;
- *(_DWORD *)(a1 + 16) = 0;
- *(_DWORD *)(a1 + 20) = 0;
- *(_DWORD *)(a1 + 24) = 0;
- *(_DWORD *)(a1 + 28) = 0;
- *(_DWORD *)(a1 + 32) = 0;
- *(_DWORD *)(a1 + 36) = 0;
- *(_DWORD *)(a1 + 40) = 0;
- *(_DWORD *)(a1 + 56) = 0;
- v10 = malloc(0x100u);
- result = v8;
- *(_WORD *)(v8 + 62) = 0;
- *(_DWORD *)(v8 + 72) = v9;
- *(_DWORD *)(v8 + 48) = v10;
- *(_DWORD *)(v8 + 68) = v10;
- *(_WORD *)(v8 + 60) = -1;
- *(_DWORD *)(v8 + 44) = sub_188C8;
- *(_WORD *)(v8 + 64) = -1;
- *(_WORD *)(v8 + 66) = -1;
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement