Function at 0x519150
Capabilities:
Get common file path
Read .ini file

Disassembly:
mov eax, 0x27e8
call fcn.00488a80
push ebx
push ebp
push esi
mov esi, dword [esp + 0x2804]
test esi, esi
mov dword [ecx + 0xc], 0
mov dword [ecx + 0x10], 0
lea ebx, [ecx + 0x14]
lea edx, [ecx + 0x18]
mov dword [ebx], 0
push edi
mov dword [esp + 0x18], ecx
mov dword [edx], 0
je 0x5191a2
or ecx, 0xffffffff
xor eax, eax
mov edi, esi
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push esi
mov ecx, edx
call fcn.0049d9d0
mov eax, dword [esp + 0x18]
mov dl, byte [esp + 0x2810]
mov ecx, dword [esp + 0x280c]
xor edi, edi
mov dword [eax + 0x1c], edi
mov dword [eax + 0x20], edi
mov dword [eax + 0x24], edi
mov dword [eax + 0x28], edi
mov dword [eax + 0x2c], edi
mov dword [eax + 0x30], edi
mov dword [eax + 0x34], edi
mov dword [eax + 0x38], edi
mov dword [eax + 0x3c], edi
mov dword [eax + 0x40], edi
lea esi, [eax + 0x24]
lea ebp, [eax + 0x2c]
test dl, dl
mov dword [eax + 0x50], ecx
mov ecx, dword [esp + 0x27fc]
sete dl
mov byte [eax + 0x44], 0
mov dword [eax + 0x48], edi
mov dword [eax + 0x4c], edi
mov byte [eax + 0x54], 0
mov byte [eax + 0x55], 1
mov byte [eax + 0x56], dl
mov byte [eax + 0x57], 0
mov dword [eax + 0x58], ecx
mov dword [eax + 0x5c], edi
mov cl, byte [0x6bd778]
test cl, cl
jne 0x51a845
mov edx, dword [esp + 0x2800]
cmp edx, edi
jne 0x519226
mov edx, 0x6630a4
cmp edx, edi
mov dword [esp + 0x14], edi
je 0x51924b
or ecx, 0xffffffff
xor eax, eax
mov edi, edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea ecx, [esp + 0x1c]
call fcn.0049d9d0
mov eax, dword [esp + 0x18]
xor edi, edi
mov edx, dword [esp + 0x14]
mov ecx, dword [eax + 0x20]
add eax, 0x20
cmp ecx, edx
mov dword [esp + 0x10], eax
je 0x51929e
mov ecx, eax
call fcn.004039f0
mov eax, dword [esp + 0x14]
cmp eax, edi
mov ecx, dword [esp + 0x10]
mov dword [ecx], eax
je 0x51929e
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
jae 0x519295
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x51929e
mov ecx, dword [esp + 0x10]
call fcn.0049d350
lea ecx, [esp + 0x14]
call fcn.004039f0
mov edx, dword [esp + 0x2804]
cmp edx, edi
mov dword [esp + 0x14], edi
je 0x5192cf
or ecx, 0xffffffff
xor eax, eax
mov edi, edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea ecx, [esp + 0x1c]
call fcn.0049d9d0
xor edi, edi
mov eax, dword [esp + 0x14]
cmp dword [esi], eax
je 0x519312
mov ecx, esi
call fcn.004039f0
mov eax, dword [esp + 0x14]
cmp eax, edi
mov dword [esi], eax
je 0x519312
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
jae 0x51930b
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x519312
mov ecx, esi
call fcn.0049d350
lea ecx, [esp + 0x14]
call fcn.004039f0
mov byte [esp + 0xbc4], 0
xor eax, eax
mov ecx, 0x40
lea edi, [esp + 0xbc5]
rep stosd dword es:[edi], eax
push 0x104
lea edx, [esp + 0xbc8]
stosw word es:[edi], ax
push edx
xor esi, esi
push esi
stosb byte es:[edi], al
call dword [0x6b951c]
mov ecx, dword [esp + 0xd4]
lea eax, [esp + 0xd4]
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0x2dc]
and eax, 0xff
or eax, 0x100
and ecx, 0xff
mov dword [esp + 0x2dc], eax
or ecx, 0x100
mov dword [esp + 0xd4], ecx
lea eax, [esp + 0x6ec]
mov dword [esp + 0x6e8], eax
mov eax, dword [esp + 0x8f4]
lea edx, [esp + 0x2dc]
mov dword [esp + 0x2d8], edx
mov edx, dword [esp + 0x4e4]
lea ecx, [esp + 0x4e4]
mov dword [esp + 0x4e0], ecx
mov ecx, dword [esp + 0x6ec]
and eax, 0xff
and edx, 0xff
or eax, 0x100
or edx, 0x100
and ecx, 0xff
mov dword [esp + 0x8f4], eax
mov al, byte [esp + 0xbc4]
mov dword [esp + 0x4e4], edx
or ecx, 0x100
test al, al
lea edx, [esp + 0x8f4]
mov dword [esp + 0x6ec], ecx
mov byte [esp + 0xd4], 0x80
mov byte [esp + 0xd8], 0
mov byte [esp + 0x2dc], 0x80
mov byte [esp + 0x2e0], 0
mov byte [esp + 0x4e4], 0x80
mov byte [esp + 0x4e8], 0
mov byte [esp + 0x6ec], 0x80
mov byte [esp + 0x6f0], 0
mov dword [esp + 0x8f0], edx
mov byte [esp + 0x8f4], 0x80
mov byte [esp + 0x8f8], 0
je 0x51947f
lea ecx, [esp + 0xbc4]
push ecx
lea ecx, [esp + 0xd4]
call fcn.004a4d20
lea edx, [esp + 0x8f0]
push edx
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x6f0]
call fcn.00440010
mov ecx, dword [ebp]
cmp ecx, dword [esp + 0x10]
je 0x5194dd
mov ecx, ebp
call fcn.004039f0
mov eax, dword [esp + 0x10]
cmp eax, esi
mov dword [ebp], eax
je 0x5194dd
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
jae 0x5194d6
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x5194dd
mov ecx, ebp
call fcn.0049d350
lea ecx, [esp + 0x10]
call fcn.004039f0
mov eax, dword [ebp]
cmp eax, esi
je 0x519506
mov ecx, dword [eax]
shr ecx, 8
cmp ecx, esi
je 0x519506
cmp eax, esi
je 0x5194ff
add eax, 4
jmp 0x519501
xor eax, eax
cmp byte [eax], 0
jne 0x519578
xor eax, eax
mov edi, 0x6630ac
mov ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x6630ac
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], esi
call fcn.0049d9d0
mov eax, dword [ebp]
cmp eax, dword [esp + 0x14]
je 0x51956f
mov ecx, ebp
call fcn.004039f0
mov eax, dword [esp + 0x14]
cmp eax, esi
mov dword [ebp], eax
je 0x51956f
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
jae 0x519568
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x51956f
mov ecx, ebp
call fcn.0049d350
lea ecx, [esp + 0x14]
call fcn.004039f0
or ecx, 0xffffffff
xor eax, eax
mov edi, 0x6b6e10
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x6b6e10
lea ecx, [esp + 0x18]
mov dword [esp + 0x18], esi
call fcn.0049d9d0
push 1
lea edx, [esp + 0x14]
push edx
push str.AppPath
push str.SOFTWAREGooglePicasaPicasa2Runtime
push SysReAllocString
lea ecx, [esp + 0x3c]
call fcn.0043c7f0
lea ecx, [esp + 0x10]
call fcn.004039f0
lea ecx, [esp + 0x5c]
mov dword [esp + 0x14], esi
call fcn.004ccff0
mov eax, dword [esp + 0x30]
cmp eax, esi
je 0x5195dc
lea ecx, [eax + 4]
jmp 0x5195de
xor ecx, ecx
mov eax, dword [esp + 0x2c]
cmp eax, esi
je 0x5195eb
add eax, 4
jmp 0x5195ed
xor eax, eax
push 0x20019
push ecx
push eax
mov eax, dword [esp + 0x34]
push eax
lea ecx, [esp + 0x6c]
call fcn.004cd0a0
test eax, eax
jne 0x519673
lea ecx, [esp + 0x14]
push ecx
push 0x1000
lea edx, [esp + 0x1800]
push edx
lea ecx, [esp + 0x40]
mov dword [esp + 0x1c], 0x1000
call fcn.0049da40
mov eax, dword [esp + 0x3c]
push eax
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x1800]
push edx
lea ecx, [esp + 0x68]
call fcn.004cd430
test eax, eax
je 0x519650
mov eax, dword [esp + 0x14]
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x5c]
call fcn.004cd270
mov eax, dword [esp + 0x10]
cmp eax, esi
je 0x519673
push eax
lea ecx, [esp + 0x17fc]
push ecx
lea ecx, [esp + 0x3c]
call fcn.0049dad0
lea ecx, [esp + 0x5c]
call fcn.004cd000
mov edx, dword [ebx]
cmp edx, dword [esp + 0x34]
je 0x5196bf
mov ecx, ebx
call fcn.004039f0
mov eax, dword [esp + 0x34]
cmp eax, esi
mov dword [ebx], eax
je 0x5196bf
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
jae 0x5196b8
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x5196bf
mov ecx, ebx
call fcn.0049d350
mov eax, dword [ebx]
cmp eax, esi
je 0x5196f8
mov ecx, dword [eax]
shr ecx, 8
cmp ecx, esi
je 0x5196f8
cmp eax, esi
je 0x5196d7
add eax, 4
jmp 0x5196d9
xor eax, eax
cmp byte [eax], 0
je 0x5196f8
mov eax, dword [ebx]
cmp eax, esi
je 0x5196e9
add eax, 4
jmp 0x5196eb
xor eax, eax
push eax
call fcn.004b5740
add esp, 4
test al, al
jne 0x51970b
mov ebx, dword [esp + 0x18]
cmp dword [ebx + 0x58], esi
je 0x51a852
mov byte [ebx + 0x57], 1
jmp 0x51970f
mov ebx, dword [esp + 0x18]
push esi
call fcn.00617366
push eax
call fcn.00489807
or ecx, 0xffffffff
add esp, 8
xor eax, eax
mov edi, 0x6b6e10
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x6b6e10
lea ecx, [esp + 0x18]
mov dword [esp + 0x18], esi
call fcn.0049d9d0
push 1
push 1
lea edx, [esp + 0x18]
push edx
push str.ClientCrash
push str.Preferences
lea ecx, [esp + 0x54]
call fcn.0046b970
lea ecx, [esp + 0x10]
call fcn.004039f0
lea ecx, [esp + 0x40]
call fcn.0043c8c0
mov eax, dword [eax]
cmp eax, esi
mov dword [esp + 0x10], eax
je 0x519793
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
jae 0x519793
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [esp + 0x10]
mov ecx, dword [ebx + 0x30]
cmp ecx, eax
lea edi, [ebx + 0x30]
je 0x5197d8
mov ecx, edi
call fcn.004039f0
mov eax, dword [esp + 0x10]
cmp eax, esi
mov dword [edi], eax
je 0x5197d8
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
jae 0x5197d1
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x5197d8
mov ecx, edi
call fcn.0049d350
lea ecx, [esp + 0x10]
call fcn.004039f0
mov eax, dword [edi]
cmp eax, esi
je 0x519800
mov ecx, dword [eax]
shr ecx, 8
cmp ecx, esi
je 0x519800
cmp eax, esi
je 0x5197f9
add eax, 4
jmp 0x5197fb
xor eax, eax
cmp byte [eax], 0
jne 0x519830
call fcn.00489814
push eax
call fcn.00489814
push eax
call fcn.00489814
push eax
call fcn.00489814
push eax
push str._x_x_x_x
push edi
call fcn.00403a60
add esp, 0x18
push edi
lea ecx, [esp + 0x44]
call fcn.00437cc0
push 1
lea eax, [ebx + 0x3c]
push eax
lea eax, [ebx + 0x38]
push eax
call fcn.004a8570
add esp, 0xc
call fcn.004cc6a0
test al, al
je 0x519b35
mov ecx, dword [esp + 0x17fc]
lea eax, [esp + 0x17fc]
mov dword [esp + 0x17f8], eax
mov eax, dword [esp + 0x1a04]
and eax, 0xff
or eax, 0x100
and ecx, 0xff
mov dword [esp + 0x1a04], eax
or ecx, 0x100
mov dword [esp + 0x17fc], ecx
lea eax, [esp + 0x1e14]
mov dword [esp + 0x1e10], eax
mov eax, dword [esp + 0x201c]
lea edx, [esp + 0x1a04]
mov dword [esp + 0x1a00], edx
mov edx, dword [esp + 0x1c0c]
lea ecx, [esp + 0x1c0c]
mov dword [esp + 0x1c08], ecx
mov ecx, dword [esp + 0x1e14]
and eax, 0xff
and edx, 0xff
or eax, 0x100
or edx, 0x100
and ecx, 0xff
mov dword [esp + 0x201c], eax
mov al, byte [str.runtimedistro.ini]
mov dword [esp + 0x1c0c], edx
or ecx, 0x100
test al, al
lea edx, [esp + 0x201c]
mov dword [esp + 0x1e14], ecx
mov byte [esp + 0x17fc], 0x80
mov byte [esp + 0x1800], 0
mov byte [esp + 0x1a04], 0x80
mov byte [esp + 0x1a08], 0
mov byte [esp + 0x1c0c], 0x80
mov byte [esp + 0x1c10], 0
mov byte [esp + 0x1e14], 0x80
mov byte [esp + 0x1e18], 0
mov dword [esp + 0x2018], edx
mov byte [esp + 0x201c], 0x80
mov byte [esp + 0x2020], 0
je 0x51997d
push str.runtimedistro.ini
lea ecx, [esp + 0x17fc]
call fcn.004a4d20
lea ecx, [esp + 0x17f8]
push esi
push ecx
call fcn.004cacb0
mov eax, dword [esp + 0x1800]
add esp, 8
cmp eax, esi
je 0x51999e
add eax, 4
jmp 0x5199a0
xor eax, eax
push eax
call fcn.004b5740
add esp, 4
test al, al
je 0x519ad7
mov eax, dword [esp + 0x17f8]
cmp eax, esi
mov dword [esp + 0x10], esi
je 0x5199c5
add eax, 4
jmp 0x5199c7
xor eax, eax
push esi
push eax
lea ecx, [esp + 0x18]
call fcn.004bc1f0
mov eax, dword [esp + 0x10]
cmp eax, esi
je 0x5199df
add eax, 4
jmp 0x5199e1
xor eax, eax
push eax
push 0x64
lea edx, [esp + 0x74]
push edx
push 0x6b6e10
push str.distro
push str.Picasa
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea ecx, [esp + 0x10]
call fcn.004039f0
or ecx, 0xffffffff
xor eax, eax
lea edi, [esp + 0x6c]
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, ecx
cmp edi, 4
jb 0x519ad7
cmp edi, 0x3e
ja 0x519ad7
lea eax, [esp + 0x6c]
push eax
call fcn.004d6cf0
add esp, 4
xor esi, esi
test edi, edi
jbe 0x519a5e
lea esp, [esp]
movsx ecx, byte [esp + esi + 0x6c]
push ecx
call fcn.00488e58
add esp, 4
test eax, eax
jne 0x519a59
cmp byte [esp + esi + 0x6c], 0x5f
jne 0x519ad7
inc esi
cmp esi, edi
jb 0x519a40
or ecx, 0xffffffff
xor eax, eax
lea edi, [esp + 0x6c]
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea edx, [esp + 0x70]
push edx
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], 0
call fcn.0049d9d0
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0x34]
lea esi, [eax + 0x34]
cmp ecx, dword [esp + 0x14]
je 0x519ace
mov ecx, esi
call fcn.004039f0
mov eax, dword [esp + 0x14]
test eax, eax
mov dword [esi], eax
je 0x519ace
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
jae 0x519ac7
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x519ace
mov ecx, esi
call fcn.0049d350
lea ecx, [esp + 0x14]
call fcn.004039f0
lea ecx, [esp + 0x2018]
call fcn.004039f0
xor esi, esi
lea ecx, [esp + 0x1e10]
mov dword [esp + 0x2018], esi
call fcn.004039f0
lea ecx, [esp + 0x1c08]
mov dword [esp + 0x1e10], esi
call fcn.004039f0
lea ecx, [esp + 0x1a00]
mov dword [esp + 0x1c08], esi
call fcn.004039f0
lea ecx, [esp + 0x17f8]
mov dword [esp + 0x1a00], esi
call fcn.004039f0
mov ebx, dword [esp + 0x18]
lea eax, [esp + 0x58]
push eax
call fcn.00617366
lea ecx, [esp + 0x5c]
push ecx
call fcn.00487137
push eax
push str._y_m_d__H_M_S
lea edx, [esp + 0xb08]
push 0xc8
push edx
call fcn.004940f8
add esp, 0x18
lea eax, [esp + 0x16f0]
push eax
push 0x104
mov byte [esp + 0xbc8], 0
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
or ecx, 0xffffffff
xor eax, eax
lea edi, [esp + 0xaf8]
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [esp + 0xafc]
push ecx
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], esi
call fcn.0049d9d0
or ecx, 0xffffffff
xor eax, eax
mov edi, 0x661538
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x661538
lea ecx, [esp + 0x2c]
mov dword [esp + 0x2c], esi
call fcn.0049d9d0
lea eax, [ebx + 0x20]
mov eax, dword [eax]
cmp eax, esi
mov dword [esp + 0x20], eax
je 0x519bec
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
jae 0x519bec
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [esp + 0x24]
cmp eax, esi
je 0x519bf9
add eax, 4
jmp 0x519bfb
xor eax, eax
push eax
lea ecx, [esp + 0x24]
call fcn.0049d460
mov eax, dword [esp + 0x20]
cmp eax, esi
mov ebp, dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
mov edi, eax
je 0x519c85
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
jae 0x519c30
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [esp + 0x20]
test eax, eax
je 0x519c85
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
mov esi, eax
jae 0x519c85
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x519c74
mov eax, dword [esi]
and eax, 0xff
cmp eax, 0x80
jae 0x519c6f
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x519c74
mov eax, 0xff
test eax, eax
jne 0x519c85
mov ecx, dword [esp + 0x20]
push ecx
call fcn.00499410
add esp, 4
test edi, edi
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], edi
je 0x519cac
mov edx, dword [edi]
and edx, 0xff
cmp edx, 0x80
jae 0x519cac
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x519cb9
add eax, 4
jmp 0x519cbb
xor eax, eax
push eax
lea ecx, [esp + 0x20]
call fcn.0049d460
mov eax, dword [esp + 0x1c]
test eax, eax
mov ebx, eax
je 0x519d3f
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
jae 0x519cea
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x519d3f
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
mov esi, eax
jae 0x519d3f
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x519d2e
mov eax, dword [esi]
and eax, 0xff
cmp eax, 0x80
jae 0x519d29
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x519d2e
mov eax, 0xff
test eax, eax
jne 0x519d3f
mov ecx, dword [esp + 0x1c]
push ecx
call fcn.00499410
add esp, 4
test edi, edi
mov dword [esp + 0x1c], 0
je 0x519d96
mov edx, dword [edi]
and edx, 0xff
cmp edx, 0x80
jae 0x519d96
push edi
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x519d89
mov eax, dword [edi]
and eax, 0xff
cmp eax, 0x80
jae 0x519d84
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x519d89
mov eax, 0xff
test eax, eax
jne 0x519d96
push edi
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0x24]
test eax, eax
je 0x519df1
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x519df1
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x519de0
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x519ddb
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x519de0
mov eax, 0xff
test eax, eax
jne 0x519df1
mov eax, dword [esp + 0x24]
push eax
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0x14]
xor edi, edi
cmp eax, edi
mov dword [esp + 0x24], edi
je 0x519e52
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x519e52
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x519e41
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x519e3c
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x519e41
mov eax, 0xff
cmp eax, edi
jne 0x519e52
mov eax, dword [esp + 0x14]
push eax
call fcn.00499410
add esp, 4
mov edx, dword [esp + 0xccc]
lea ecx, [esp + 0xccc]
mov dword [esp + 0xcc8], ecx
mov ecx, dword [esp + 0xed4]
and edx, 0xff
and ecx, 0xff
or edx, 0x100
or ecx, 0x100
lea eax, [esp + 0xed4]
mov dword [esp + 0xed0], eax
mov eax, dword [esp + 0x10dc]
mov dword [esp + 0xccc], edx
mov dword [esp + 0xed4], ecx
and eax, 0xff
or eax, 0x100
lea edx, [esp + 0x10dc]
lea ecx, [esp + 0x12e4]
mov dword [esp + 0x10d8], edx
mov edx, dword [esp + 0x12e4]
mov dword [esp + 0x12e0], ecx
mov ecx, dword [esp + 0x14ec]
mov dword [esp + 0x10dc], eax
lea eax, [esp + 0x14ec]
and edx, 0xff
and ecx, 0xff
or edx, 0x100
mov dword [esp + 0x14e8], eax
mov al, byte [esp + 0x16f0]
or ecx, 0x100
test al, al
mov dword [esp + 0x12e4], edx
mov dword [esp + 0x14ec], ecx
mov dword [esp + 0x14], edi
mov byte [esp + 0xccc], 0x80
mov byte [esp + 0xcd0], 0
mov byte [esp + 0xed4], 0x80
mov byte [esp + 0xed8], 0
mov byte [esp + 0x10dc], 0x80
mov byte [esp + 0x10e0], 0
mov byte [esp + 0x12e4], 0x80
mov byte [esp + 0x12e8], 0
mov byte [esp + 0x14ec], 0x80
mov byte [esp + 0x14f0], 0
je 0x519f8b
lea edx, [esp + 0x16f0]
push edx
lea ecx, [esp + 0xccc]
call fcn.004a4d20
cmp ebx, edi
je 0x519f94
lea eax, [ebx + 4]
jmp 0x519f96
xor eax, eax
push edi
push eax
lea ecx, [esp + 0xcd0]
call fcn.004a5150
push str..dmp
lea ecx, [esp + 0xccc]
call fcn.004a4ff0
mov eax, dword [esp + 0xcc8]
cmp eax, edi
je 0x519fc5
lea edx, [eax + 4]
jmp 0x519fc7
xor edx, edx
cmp edx, edi
mov dword [esp + 0x10], edi
je 0x519fe6
or ecx, 0xffffffff
xor eax, eax
mov edi, edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea ecx, [esp + 0x18]
call fcn.0049d9d0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
lea esi, [eax + 0xc]
cmp dword [esi], ecx
je 0x51a030
mov ecx, esi
call fcn.004039f0
mov eax, dword [esp + 0x10]
test eax, eax
mov dword [esi], eax
je 0x51a030
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
jae 0x51a029
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x51a030
mov ecx, esi
call fcn.0049d350
lea ecx, [esp + 0x10]
call fcn.004039f0
push str..dat
lea ecx, [esp + 0xccc]
call fcn.004a4ff0
mov eax, dword [esp + 0xcc8]
test eax, eax
je 0x51a05a
lea edx, [eax + 4]
jmp 0x51a05c
xor edx, edx
test edx, edx
mov dword [esp + 0x10], 0
je 0x51a07f
or ecx, 0xffffffff
xor eax, eax
mov edi, edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea ecx, [esp + 0x18]
call fcn.0049d9d0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
lea edi, [eax + 0x10]
cmp dword [edi], ecx
je 0x51a0c9
mov ecx, edi
call fcn.004039f0
mov eax, dword [esp + 0x10]
test eax, eax
mov dword [edi], eax
je 0x51a0c9
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
jae 0x51a0c2
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x51a0c9
mov ecx, edi
call fcn.0049d350
lea ecx, [esp + 0x10]
call fcn.004039f0
push 0x51b000
call dword [sym.imp.KERNEL32.dll_SetUnhandledExceptionFilter]
mov ecx, dword [esp + 0x18]
mov dword [ecx + 0x5c], eax
mov eax, dword [esi]
test eax, eax
je 0x51a0fe
lea ecx, [eax + 4]
test ecx, ecx
je 0x51a0fe
test eax, eax
je 0x51a0fa
add eax, 4
jmp 0x51a103
xor eax, eax
jmp 0x51a103
mov eax, 0x6b6e10
mov edx, dword [esp + 0x18]
push eax
lea esi, [edx + 0x40]
push str._dump__d___s_
push esi
call fcn.00403a60
mov eax, dword [edi]
add esp, 0xc
test eax, eax
je 0x51a133
lea ecx, [eax + 4]
test ecx, ecx
je 0x51a133
test eax, eax
je 0x51a12f
add eax, 4
jmp 0x51a138
xor eax, eax
jmp 0x51a138
mov eax, 0x6b6e10
push eax
push str._i___s_
push esi
call fcn.00403a80
mov eax, dword [esp + 0x2814]
xor edi, edi
add esp, 0xc
cmp eax, edi
je 0x51a168
cmp byte [eax], 0
je 0x51a168
push eax
push str._u___s_
push esi
call fcn.00403a80
add esp, 0xc
mov eax, dword [esp + 0x280c]
cmp eax, edi
je 0x51a182
push eax
push str._t__ld
push esi
call fcn.00403a80
add esp, 0xc
mov al, byte [esp + 0x2810]
test al, al
jne 0x51a199
push str._s_1
mov ecx, esi
call fcn.0049d460
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, dword [esp + 0x18]
mov dword [esi + 0x4c], eax
call fcn.00489814
xor edx, edx
mov ecx, 5
div ecx
test edx, edx
jne 0x51a1bb
mov byte [esi + 0x55], dl
lea ecx, [esp + 0x14e8]
mov byte [esi + 0x44], 1
call fcn.004039f0
lea ecx, [esp + 0x12e0]
mov dword [esp + 0x14e8], edi
call fcn.004039f0
mov eax, dword [esp + 0x10d8]
cmp eax, edi
mov dword [esp + 0x12e0], edi
je 0x51a24e
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
mov esi, eax
jae 0x51a24e
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a232
mov eax, dword [esi]
and eax, 0xff
cmp eax, 0x80
jae 0x51a22d
mov edi, dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
push esi
call edi
and eax, 0xff
jmp 0x51a238
mov eax, 0xff
mov edi, dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
test eax, eax
jne 0x51a254
mov ecx, dword [esp + 0x10d8]
push ecx
call fcn.00499410
add esp, 4
jmp 0x51a254
mov edi, dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [esp + 0xed0]
test eax, eax
mov dword [esp + 0x10d8], 0
je 0x51a2ba
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
mov esi, eax
jae 0x51a2ba
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a2a6
mov eax, dword [esi]
and eax, 0xff
cmp eax, 0x80
jae 0x51a2a1
push esi
call edi
and eax, 0xff
jmp 0x51a2a6
mov eax, 0xff
test eax, eax
jne 0x51a2ba
mov ecx, dword [esp + 0xed0]
push ecx
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0xcc8]
test eax, eax
mov dword [esp + 0xed0], 0
je 0x51a320
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
mov esi, eax
jae 0x51a320
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a30c
mov eax, dword [esi]
and eax, 0xff
cmp eax, 0x80
jae 0x51a307
push esi
call edi
and eax, 0xff
jmp 0x51a30c
mov eax, 0xff
test eax, eax
jne 0x51a320
mov ecx, dword [esp + 0xcc8]
push ecx
call fcn.00499410
add esp, 4
test ebx, ebx
mov dword [esp + 0xcc8], 0
je 0x51a376
mov edx, dword [ebx]
and edx, 0xff
cmp edx, 0x80
jae 0x51a376
push ebx
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a369
mov eax, dword [ebx]
and eax, 0xff
cmp eax, 0x80
jae 0x51a364
push ebx
call edi
and eax, 0xff
jmp 0x51a369
mov eax, 0xff
test eax, eax
jne 0x51a376
push ebx
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0x50]
test eax, eax
je 0x51a3d1
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x51a3d1
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a3bc
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x51a3b7
push esi
call edi
and eax, 0xff
jmp 0x51a3bc
mov eax, 0xff
xor ebx, ebx
cmp eax, ebx
jne 0x51a3d3
mov eax, dword [esp + 0x50]
push eax
call fcn.00499410
add esp, 4
jmp 0x51a3d3
xor ebx, ebx
mov eax, dword [esp + 0x4c]
cmp eax, ebx
mov dword [esp + 0x50], ebx
je 0x51a42e
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x51a42e
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a41d
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x51a418
push esi
call edi
and eax, 0xff
jmp 0x51a41d
mov eax, 0xff
cmp eax, ebx
jne 0x51a42e
mov eax, dword [esp + 0x4c]
push eax
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0x48]
cmp eax, ebx
mov dword [esp + 0x4c], ebx
je 0x51a489
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x51a489
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a478
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x51a473
push esi
call edi
and eax, 0xff
jmp 0x51a478
mov eax, 0xff
cmp eax, ebx
jne 0x51a489
mov eax, dword [esp + 0x48]
push eax
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0x44]
cmp eax, ebx
mov dword [esp + 0x48], ebx
je 0x51a4e4
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x51a4e4
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a4d3
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x51a4ce
push esi
call edi
and eax, 0xff
jmp 0x51a4d3
mov eax, 0xff
cmp eax, ebx
jne 0x51a4e4
mov eax, dword [esp + 0x44]
push eax
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0x38]
cmp eax, ebx
mov dword [esp + 0x44], ebx
je 0x51a53f
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x51a53f
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a52e
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x51a529
push esi
call edi
and eax, 0xff
jmp 0x51a52e
mov eax, 0xff
cmp eax, ebx
jne 0x51a53f
mov eax, dword [esp + 0x38]
push eax
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0x34]
cmp eax, ebx
mov dword [esp + 0x38], ebx
je 0x51a59a
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x51a59a
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a589
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x51a584
push esi
call edi
and eax, 0xff
jmp 0x51a589
mov eax, 0xff
cmp eax, ebx
jne 0x51a59a
mov eax, dword [esp + 0x34]
push eax
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0x30]
cmp eax, ebx
mov dword [esp + 0x34], ebx
je 0x51a5f5
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x51a5f5
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a5e4
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x51a5df
push esi
call edi
and eax, 0xff
jmp 0x51a5e4
mov eax, 0xff
cmp eax, ebx
jne 0x51a5f5
mov eax, dword [esp + 0x30]
push eax
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0x2c]
cmp eax, ebx
mov dword [esp + 0x30], ebx
je 0x51a650
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x51a650
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a63f
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x51a63a
push esi
call edi
and eax, 0xff
jmp 0x51a63f
mov eax, 0xff
cmp eax, ebx
jne 0x51a650
mov eax, dword [esp + 0x2c]
push eax
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0x8f0]
cmp eax, ebx
mov dword [esp + 0x2c], ebx
je 0x51a6b1
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x51a6b1
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a69d
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x51a698
push esi
call edi
and eax, 0xff
jmp 0x51a69d
mov eax, 0xff
cmp eax, ebx
jne 0x51a6b1
mov eax, dword [esp + 0x8f0]
push eax
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0x6e8]
cmp eax, ebx
mov dword [esp + 0x8f0], ebx
je 0x51a715
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x51a715
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a701
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x51a6fc
push esi
call edi
and eax, 0xff
jmp 0x51a701
mov eax, 0xff
cmp eax, ebx
jne 0x51a715
mov eax, dword [esp + 0x6e8]
push eax
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0x4e0]
cmp eax, ebx
mov dword [esp + 0x6e8], ebx
je 0x51a779
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x51a779
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a765
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x51a760
push esi
call edi
and eax, 0xff
jmp 0x51a765
mov eax, 0xff
cmp eax, ebx
jne 0x51a779
mov eax, dword [esp + 0x4e0]
push eax
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0x2d8]
cmp eax, ebx
mov dword [esp + 0x4e0], ebx
je 0x51a7dd
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x51a7dd
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a7c9
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x51a7c4
push esi
call edi
and eax, 0xff
jmp 0x51a7c9
mov eax, 0xff
cmp eax, ebx
jne 0x51a7dd
mov eax, dword [esp + 0x2d8]
push eax
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0xd0]
cmp eax, ebx
mov dword [esp + 0x2d8], ebx
je 0x51a841
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x51a841
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x51a82d
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x51a828
push esi
call edi
and eax, 0xff
jmp 0x51a82d
mov eax, 0xff
cmp eax, ebx
jne 0x51a841
mov eax, dword [esp + 0xd0]
push eax
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0x18]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x27e8
ret 0x18
lea ecx, [esp + 0x28]
call fcn.0043b130
lea ecx, [esp + 0x8f0]
call fcn.004039f0
lea ecx, [esp + 0x6e8]
mov dword [esp + 0x8f0], esi
call fcn.004039f0
lea ecx, [esp + 0x4e0]
mov dword [esp + 0x6e8], esi
call fcn.004039f0
lea ecx, [esp + 0x2d8]
mov dword [esp + 0x4e0], esi
call fcn.004039f0
lea ecx, [esp + 0xd0]
mov dword [esp + 0x2d8], esi
call fcn.004039f0
pop edi
pop esi
pop ebp
mov eax, ebx
pop ebx
add esp, 0x27e8
ret 0x18