Function at 0x40a8f0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x434
mov eax, dword [0x4fa2a0]
xor eax, esp
mov dword [esp + 0x430], eax
push ebx
push esi
push edi
xor ebx, ebx
push ebx
push 0xfa1
call fcn.00414ca0
push 0x206
lea ecx, [esp + 0x36]
xor eax, eax
push ebx
push ecx
mov word [esp + 0x3c], ax
call fcn.00436fe0
add esp, 0x14
push 0x206
lea eax, [esp + 0x236]
xor edx, edx
push ebx
push eax
mov word [esp + 0x23c], dx
call fcn.00436fe0
add esp, 0xc
lea ecx, [esp + 0x28]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
lea edx, [esp + 0x230]
push edx
push ebx
push str.gppins
lea eax, [esp + 0x34]
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
test eax, eax
je 0x40a9c8
xor eax, eax
jmp 0x40a990
movzx ecx, word [esp + eax + 0x230]
mov word [esp + eax + 0x28], cx
add eax, 2
cmp cx, bx
jne 0x40a990
lea eax, [esp + 0x28]
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x40a9b0
sub eax, edx
sar eax, 1
xor ecx, ecx
mov word [esp + eax*2 + 0x20], cx
jmp 0x40a9ff
lea eax, [esp + 0x28]
add eax, 0xfffffffe
nop
mov cx, word [eax + 2]
add eax, 2
cmp cx, bx
jne 0x40a9d0
mov edx, dword [str.tmpgpp]
mov ecx, dword [0x4d5760]
mov dword [eax], edx
mov edx, dword [0x4d5764]
mov dword [eax + 4], ecx
mov ecx, dword [0x4d5768]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov eax, dword [0x4ff104]
cmp eax, ebx
jne 0x40aa29
push 0x24d8
call fcn.0042d9bc
add esp, 4
cmp eax, ebx
je 0x40aa22
mov esi, eax
call fcn.00411420
jmp 0x40aa24
xor eax, eax
mov dword [0x4ff104], eax
push 1
lea ecx, [esp + 0x2c]
mov edx, eax
call fcn.00410270
call fcn.0040a4c0
push ebx
push 0xfa2
call fcn.00414ca0
mov edx, dword [0x4fb44c]
mov eax, dword [edx + 0xc]
add esp, 8
mov ecx, 0x4fb44c
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
mov eax, dword [0x4ff104]
cmp eax, ebx
jne 0x40aa8a
push 0x24d8
call fcn.0042d9bc
add esp, 4
cmp eax, ebx
je 0x40aa83
mov esi, eax
call fcn.00411420
jmp 0x40aa85
xor eax, eax
mov dword [0x4ff104], eax
add eax, 0x208
push eax
push str._sApps
lea edi, [esp + 0x2c]
call fcn.00403dd0
mov eax, dword [0x4ff104]
add esp, 8
cmp eax, ebx
jne 0x40aacb
push 0x24d8
call fcn.0042d9bc
add esp, 4
cmp eax, ebx
je 0x40aac4
mov esi, eax
call fcn.00411420
jmp 0x40aac6
xor eax, eax
mov dword [0x4ff104], eax
mov ecx, dword [esp + 0x24]
push 1
push 0x4d4b10
push ecx
mov ecx, eax
call fcn.0040d1b0
mov edx, dword [0x4fb44c]
mov eax, dword [edx + 0xc]
mov ecx, 0x4fb44c
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [0x4ff104]
cmp eax, ebx
jne 0x40ab1f
push 0x24d8
call fcn.0042d9bc
add esp, 4
cmp eax, ebx
je 0x40ab18
mov esi, eax
call fcn.00411420
jmp 0x40ab1a
xor eax, eax
mov dword [0x4ff104], eax
add eax, 0x208
push eax
push str._sMain
lea edi, [esp + 0x24]
call fcn.00403dd0
mov eax, dword [0x4ff104]
add esp, 8
cmp eax, ebx
jne 0x40ab60
push 0x24d8
call fcn.0042d9bc
add esp, 4
cmp eax, ebx
je 0x40ab59
mov esi, eax
call fcn.00411420
jmp 0x40ab5b
xor eax, eax
mov dword [0x4ff104], eax
mov ecx, dword [esp + 0x1c]
push 2
push 0x4d4b10
push ecx
mov ecx, eax
call fcn.0040d1b0
mov edx, dword [0x4fb44c]
mov eax, dword [edx + 0xc]
mov ecx, 0x4fb44c
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [0x4ff104]
cmp eax, ebx
jne 0x40abb4
push 0x24d8
call fcn.0042d9bc
add esp, 4
cmp eax, ebx
je 0x40abad
mov esi, eax
call fcn.00411420
jmp 0x40abaf
xor eax, eax
mov dword [0x4ff104], eax
add eax, 0x208
push eax
push str._sSDK
lea edi, [esp + 0x28]
call fcn.00403dd0
mov eax, dword [0x4ff104]
add esp, 8
cmp eax, ebx
jne 0x40abf5
push 0x24d8
call fcn.0042d9bc
add esp, 4
cmp eax, ebx
je 0x40abee
mov esi, eax
call fcn.00411420
jmp 0x40abf0
xor eax, eax
mov dword [0x4ff104], eax
mov ecx, dword [esp + 0x20]
push 3
push 0x4d4b10
push ecx
mov ecx, eax
call fcn.0040d1b0
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], ebx
mov ecx, dword [0x4ff104]
test ecx, ecx
jne 0x40ac3e
push 0x24d8
call fcn.0042d9bc
add esp, 4
test eax, eax
je 0x40ac36
mov esi, eax
call fcn.00411420
mov ecx, eax
jmp 0x40ac38
xor ecx, ecx
mov dword [0x4ff104], ecx
mov edx, dword [ecx + 0x2294]
sub edx, dword [ecx + 0x2290]
mov eax, 0x7e07e07f
imul edx
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0xc], eax
jae 0x40ad79
test ecx, ecx
jne 0x40ac8d
push 0x24d8
call fcn.0042d9bc
add esp, 4
test eax, eax
je 0x40ac85
mov esi, eax
call fcn.00411420
mov ecx, eax
jmp 0x40ac87
xor ecx, ecx
mov dword [0x4ff104], ecx
mov dword [esp + 0x18], ecx
test ecx, ecx
jne 0x40acb9
push 0x24d8
call fcn.0042d9bc
add esp, 4
test eax, eax
je 0x40acb1
mov esi, eax
call fcn.00411420
mov ecx, eax
jmp 0x40acb3
xor ecx, ecx
mov dword [0x4ff104], ecx
mov edi, ecx
test ecx, ecx
jne 0x40ace3
push 0x24d8
call fcn.0042d9bc
add esp, 4
test eax, eax
je 0x40acdb
mov esi, eax
call fcn.00411420
mov ecx, eax
jmp 0x40acdd
xor ecx, ecx
mov dword [0x4ff104], ecx
mov ebx, dword [ecx + 0x2290]
mov ecx, dword [esp + 0x18]
add ebx, dword [esp + 0x10]
add ecx, 0x1c70
lea edx, [edi + 0x208]
call fcn.0040d8e0
mov ebx, eax
mov eax, dword [0x4ff104]
test eax, eax
jne 0x40ad2e
push 0x24d8
call fcn.0042d9bc
add esp, 4
test eax, eax
je 0x40ad27
mov esi, eax
call fcn.00411420
jmp 0x40ad29
xor eax, eax
mov dword [0x4ff104], eax
mov ecx, dword [eax + 0x2290]
mov esi, dword [esp + 0x10]
lea edx, [esi + ecx + 0x208]
nop
movzx ecx, word [ebx]
mov word [edx], cx
add ebx, 2
add edx, 2
test cx, cx
jne 0x40ad40
mov edx, dword [eax + 0x2290]
lea ecx, [esi + edx]
lea edx, [ecx + 0x208]
push eax
call fcn.0040d9c0
inc dword [esp + 0xc]
add esi, 0x410
mov dword [esp + 0x10], esi
jmp 0x40ac10
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
lea esp, [esp]
test ecx, ecx
jne 0x40adb8
push 0x24d8
call fcn.0042d9bc
add esp, 4
test eax, eax
je 0x40adb0
mov esi, eax
call fcn.00411420
mov ecx, eax
jmp 0x40adb2
xor ecx, ecx
mov dword [0x4ff104], ecx
mov edx, dword [ecx + 0x22a4]
sub edx, dword [ecx + 0x22a0]
mov eax, 0x7e07e07f
imul edx
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x14], eax
jae 0x40afb4
mov edx, dword [0x4fb44c]
mov eax, dword [edx + 0xc]
mov ecx, 0x4fb44c
call eax
add eax, 0x10
mov dword [esp + 0xc], eax
mov eax, dword [0x4ff104]
test eax, eax
jne 0x40ae20
push 0x24d8
call fcn.0042d9bc
add esp, 4
test eax, eax
je 0x40ae19
mov esi, eax
call fcn.00411420
jmp 0x40ae1b
xor eax, eax
mov dword [0x4ff104], eax
add eax, 0x208
push eax
push str._sMain
lea edi, [esp + 0x14]
call fcn.00403dd0
mov eax, dword [0x4ff104]
add esp, 8
test eax, eax
jne 0x40ae61
push 0x24d8
call fcn.0042d9bc
add esp, 4
test eax, eax
je 0x40ae5a
mov esi, eax
call fcn.00411420
jmp 0x40ae5c
xor eax, eax
mov dword [0x4ff104], eax
mov edi, dword [esp + 0xc]
cmp dword [edi - 4], 1
mov dword [esp + 0x18], eax
jle 0x40ae86
mov ecx, dword [edi - 0xc]
push ecx
lea edx, [esp + 0x10]
push edx
call fcn.00403650
mov edi, dword [esp + 0xc]
mov eax, dword [0x4ff104]
test eax, eax
jne 0x40aeab
push 0x24d8
call fcn.0042d9bc
add esp, 4
test eax, eax
je 0x40aea4
mov esi, eax
call fcn.00411420
jmp 0x40aea6
xor eax, eax
mov dword [0x4ff104], eax
mov ebx, dword [eax + 0x22a0]
mov ecx, dword [esp + 0x18]
add ebx, dword [esp + 0x10]
add ecx, 0x410
mov edx, edi
call fcn.0040d8e0
mov ebx, eax
mov eax, dword [0x4ff104]
test eax, eax
jne 0x40aef2
push 0x24d8
call fcn.0042d9bc
add esp, 4
test eax, eax
je 0x40aeeb
mov esi, eax
call fcn.00411420
jmp 0x40aeed
xor eax, eax
mov dword [0x4ff104], eax
mov eax, dword [eax + 0x22a0]
mov ecx, dword [esp + 0x10]
lea ecx, [eax + ecx + 0x208]
movzx eax, word [ebx]
mov word [ecx], ax
add ebx, 2
add ecx, 2
test ax, ax
jne 0x40af03
mov eax, dword [edi - 8]
push eax
push edi
call fcn.0042ded6
add esp, 8
test eax, eax
js 0x40afaa
cmp eax, dword [edi - 8]
jg 0x40afaa
xor edx, edx
mov dword [edi - 0xc], eax
mov word [edi + eax*2], dx
mov eax, dword [0x4ff104]
test eax, eax
jne 0x40af61
push 0x24d8
call fcn.0042d9bc
add esp, 4
test eax, eax
je 0x40af5a
mov esi, eax
call fcn.00411420
jmp 0x40af5c
xor eax, eax
mov dword [0x4ff104], eax
mov ecx, dword [eax + 0x22a0]
add ecx, dword [esp + 0x10]
push eax
lea edx, [ecx + 0x208]
call fcn.0040d9c0
add edi, 0xfffffff0
lea eax, [edi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40af93
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
inc dword [esp + 0x14]
add dword [esp + 0x10], 0x410
mov ecx, dword [0x4ff104]
jmp 0x40ad90
push 0x80070057
call fcn.00403050
xor ebx, ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], ebx
test ecx, ecx
jne 0x40afe6
push 0x24d8
call fcn.0042d9bc
add esp, 4
test eax, eax
je 0x40afde
mov esi, eax
call fcn.00411420
mov ecx, eax
jmp 0x40afe0
xor ecx, ecx
mov dword [0x4ff104], ecx
mov edx, dword [ecx + 0x22b4]
sub edx, dword [ecx + 0x22b0]
mov eax, 0x7e07e07f
imul edx
sar edx, 9
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp dword [esp + 0x14], ecx
jae 0x40b1ca
mov edx, dword [0x4fb44c]
mov eax, dword [edx + 0xc]
mov ecx, 0x4fb44c
call eax
add eax, 0x10
mov dword [esp + 0x10], eax
mov eax, dword [0x4ff104]
test eax, eax
jne 0x40b04e
push 0x24d8
call fcn.0042d9bc
add esp, 4
test eax, eax
je 0x40b047
mov esi, eax
call fcn.00411420
jmp 0x40b049
xor eax, eax
mov dword [0x4ff104], eax
add eax, 0x208
push eax
push str._sSDK
lea edi, [esp + 0x18]
call fcn.00403dd0
mov eax, dword [0x4ff104]
add esp, 8
test eax, eax
jne 0x40b08f
push 0x24d8
call fcn.0042d9bc
add esp, 4
test eax, eax
je 0x40b088
mov esi, eax
call fcn.00411420
jmp 0x40b08a
xor eax, eax
mov dword [0x4ff104], eax
mov edx, dword [0x4fb44c]
mov esi, dword [eax + 0x22b0]
mov eax, dword [edx + 0xc]
mov ecx, 0x4fb44c
call eax
add eax, 0x10
add esi, ebx
mov dword [esp + 0xc], eax
je 0x40b0d2
test esi, 0xffff0000
jne 0x40b0d6
movzx edi, si
call fcn.004030e0
test eax, eax
je 0x40b100
push eax
mov eax, edi
lea edi, [esp + 0x10]
call fcn.004034a0
jmp 0x40b100
xor eax, eax
jmp 0x40b0ef
mov eax, esi
lea edx, [eax + 2]
jmp 0x40b0e0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40b0e0
sub eax, edx
sar eax, 1
push esi
lea ecx, [esp + 0x10]
push ecx
mov ebx, eax
call fcn.00403540
mov ebx, dword [esp + 0x18]
mov eax, dword [0x4ff104]
test eax, eax
jne 0x40b12a
push 0x24d8
call fcn.0042d9bc
add esp, 4
test eax, eax
je 0x40b123
mov esi, eax
call fcn.00411420
jmp 0x40b125
xor eax, eax
mov dword [0x4ff104], eax
mov edi, dword [esp + 0x10]
add eax, 0x1e78
push eax
push edi
lea edx, [esp + 0x14]
push edx
call fcn.0040a110
mov eax, dword [0x4ff104]
test eax, eax
jne 0x40b169
push 0x24d8
call fcn.0042d9bc
add esp, 4
test eax, eax
je 0x40b162
mov esi, eax
call fcn.00411420
jmp 0x40b164
xor eax, eax
mov dword [0x4ff104], eax
mov ecx, dword [eax + 0x22b0]
mov esi, dword [esp + 0xc]
add ecx, ebx
push eax
mov edx, esi
call fcn.0040d9c0
lea eax, [esi - 0x10]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b199
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b1b5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
inc dword [esp + 0x14]
mov ecx, dword [0x4ff104]
add ebx, 0x410
jmp 0x40afba
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b1ea
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b20a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b22a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x43c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0042cf77
mov esp, ebp
pop ebp
ret