Function at 0x402040
Capabilities:
Check mutex on windows
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x20
call fcn.00403a70
lea eax, [ebp - 0x2c]
push 0xc
push 0x5011b7
push 0x1b
push 0x50119c
push eax
call fcn.004088a0
add esp, 0x14
mov edi, dword [ebp - 0x24]
mov esi, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x28]
cmp edi, 7
ja 0x40208d
test edi, edi
je 0x4020c6
xor edx, edx
nop dword [eax]
cmp byte [ebx + edx], 0
je 0x40209d
inc edx
cmp edi, edx
jne 0x402080
jmp 0x4020c6
push edi
push ebx
push 0
call fcn.004dfdc0
add esp, 0xc
test eax, eax
je 0x4020c6
mov eax, esi
neg eax
jo 0x4020df
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x10], edx
lea eax, [ebp - 0x1c]
push 0x5011d0
push 0x50113c
push eax
push 0
push 1
call fcn.004dafa0
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], edi
push eax
call fcn.004cfde0
add esp, 4
mov ebx, eax
mov edi, edx
push ebx
push 0
push 0
call sub.kernel32.dll_CreateMutexA
call sub.kernel32.dll_GetLastError
cmp eax, 0xb7
je 0x402206
mov dword [ebp - 0x20], ebx
call fcn.0040c310
push 0x7d0
call fcn.00409320
add esp, 4
mov esi, dword [0x59fb24]
movzx eax, byte [esi]
push 1
push 0x78600
call fcn.0040cd10
add esp, 8
test eax, eax
je 0x402223
mov ebx, eax
push 0x78600
push 0x5011e0
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
xor eax, eax
nop word cs:[eax + eax]
nop
mov ecx, eax
and ecx, 0x1f
movzx ecx, byte [ecx + 0x5797e0]
xor byte [ebx + eax], cl
inc eax
cmp eax, 0x78600
jne 0x402150
push 0xfa0
call fcn.00409320
add esp, 4
lea eax, [ebp - 0x1c]
push eax
call fcn.00407430
add esp, 4
mov eax, dword [ebp - 0x1c]
mov ecx, eax
neg ecx
jo 0x402199
jae 0x402199
push 1
push eax
push dword [ebp - 0x18]
call fcn.0040cd20
add esp, 0xc
movzx eax, byte [esi]
push 1
push 0x78600
call fcn.0040cd10
add esp, 8
test eax, eax
je 0x402223
mov esi, eax
push 0x78600
push ebx
push eax
call sub.msvcrt.dll_memcpy
sub esp, 0xc
mov dword [esp], esi
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x78600
call fcn.00409ae0
add esp, 0x18
push 1
push 0x78600
push esi
call fcn.0040cd20
add esp, 0xc
push 1
push 0x78600
push ebx
call fcn.0040cd20
add esp, 0xc
mov ebx, dword [ebp - 0x20]
test edi, edi
mov byte [ebx], 0
je 0x40221b
push 1
push edi
push ebx
call fcn.0040cd20
add esp, 0x2c
jmp 0x40221e
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x78600
push 1
call fcn.004cf340
nop
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x190
call fcn.00403a70
lea esi, [ebp - 0x19c]
push esi
call fcn.00483e20
add esp, 4
lea eax, [ebp - 0x180]
push esi
push eax
call fcn.0040b670
add esp, 8
mov eax, dword [ebp - 0x178]
mov ebx, dword [ebp - 0x17c]
mov dword [ebp - 0xf8], eax
lea eax, [eax*4]
mov dword [ebp - 0xf4], ebx
lea edi, [eax + eax*2]
jmp 0x40229e
add ebx, 0xc
add edi, 0xfffffff4
test cl, cl
jne 0x402323
test edi, edi
je 0x40324d
mov eax, dword [ebx + 4]
mov esi, dword [ebx + 8]
mov dword [ebp - 0x2c], eax
push 0xc
push 0x57981a
push 0x1a
push 0x579800
lea eax, [ebp - 0xcc]
push eax
call fcn.004088a0
add esp, 0x14
mov eax, dword [ebp - 0xc8]
cmp esi, dword [ebp - 0xc4]
jne 0x402300
push esi
mov esi, eax
push eax
push dword [ebp - 0x2c]
call sub.msvcrt.dll_memcmp
add esp, 0xc
test eax, eax
sete cl
mov eax, dword [ebp - 0xcc]
test eax, eax
jne 0x40230e
jmp 0x402290
mov esi, eax
xor ecx, ecx
mov eax, dword [ebp - 0xcc]
test eax, eax
je 0x402290
push 1
push eax
push esi
mov esi, ecx
call fcn.0040cd20
mov ecx, esi
add esp, 0xc
jmp 0x402290
lea ebx, [ebp - 0xcc]
push ebx
call fcn.00403490
add esp, 4
mov eax, dword [ebp - 0xcc]
mov dword [ebp - 0xf0], eax
neg eax
jo 0x4032b3
mov esi, dword [ebp - 0xc8]
push ebx
call fcn.00403490
add esp, 4
mov eax, dword [ebp - 0xcc]
mov edi, dword [ebp - 0xc8]
mov dword [ebp - 0xec], eax
neg eax
jo 0x4032c1
mov dword [ebp - 0x120], esi
mov esi, dword [ebp - 0xc4]
lea eax, [ebp - 0x118]
push 0xc
push 0x579888
push 0x28
push 0x579860
push eax
call fcn.004088a0
add esp, 0x14
lea eax, [ebp - 0x174]
push 0xc
push 0x5798d5
push 0x41
push 0x579894
push eax
call fcn.004088a0
add esp, 0x14
lea eax, [ebp - 0x60]
push 0xc
push 0x57991e
push 0x3d
push 0x5798e1
push eax
call fcn.004088a0
add esp, 0x14
mov dword [ebp - 0x10c], edi
mov dword [ebp - 0x50], esi
mov dword [ebp - 0x108], esi
lea esi, [ebp - 0x28]
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 1
mov dword [ebp - 0xb0], 0
mov dword [ebp - 0xbc], 0x20
mov byte [ebp - 0xac], 3
mov dword [ebp - 0xcc], 0
mov dword [ebp - 0xc4], 0
mov dword [ebp - 0x54], edi
mov dword [ebp - 0x20], 0
lea eax, [ebp - 0x10c]
mov dword [ebp - 0xb8], esi
mov dword [ebp - 0xb4], 0x501000
push ebx
push eax
call fcn.00494370
add esp, 8
test al, al
jne 0x4032de
mov eax, dword [ebp - 0x20]
movsd xmm0, qword [ebp - 0x28]
movsd qword [ebp - 0x3c], xmm0
mov dword [ebp - 0x34], eax
push 0xc
push 0x579959
push 0x2f
push 0x57992a
push esi
call fcn.004088a0
add esp, 0x14
movsd xmm0, qword [ebp - 0x118]
mov eax, dword [ebp - 0x110]
mov edx, dword [ebp - 0x16c]
mov ecx, dword [ebp - 0x58]
movsd qword [ebp - 0xcc], xmm0
movsd xmm0, qword [ebp - 0x174]
mov dword [ebp - 0xc4], eax
mov dword [ebp - 0xb8], edx
mov edx, dword [ebp - 0x34]
movsd qword [ebp - 0xc0], xmm0
movsd xmm0, qword [ebp - 0x60]
mov dword [ebp - 0xac], ecx
mov ecx, dword [ebp - 0x20]
movsd qword [ebp - 0xb4], xmm0
movsd xmm0, qword [ebp - 0x3c]
mov dword [ebp - 0xa0], edx
movsd qword [ebp - 0xa8], xmm0
movsd xmm0, qword [ebp - 0x28]
mov dword [ebp - 0x94], ecx
movsd qword [ebp - 0x9c], xmm0
push 0
push 1
push 5
push ebx
push esi
call fcn.004096f0
add esp, 0x14
mov eax, dword [ebp - 0x28]
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0xe8], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp - 0xcc]
test eax, eax
je 0x402531
push 1
push eax
push dword [ebp - 0xc8]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0xc0]
test eax, eax
je 0x40254c
push 1
push eax
push dword [ebp - 0xbc]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0xb4]
test eax, eax
je 0x402567
push 1
push eax
push dword [ebp - 0xb0]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0xa8]
test eax, eax
je 0x402582
push 1
push eax
push dword [ebp - 0xa4]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x9c]
test eax, eax
je 0x40259d
push 1
push eax
push dword [ebp - 0x98]
call fcn.0040cd20
add esp, 0xc
push 0xc
push 0x57997f
push 0x1a
push 0x579965
push esi
call fcn.004088a0
add esp, 0x14
mov esi, dword [ebp - 0x24]
push dword [ebp - 0x20]
push esi
lea eax, [ebp - 0xcc]
push eax
call fcn.004a27e0
add esp, 0xc
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x4025dd
push 1
push eax
push esi
call fcn.0040cd20
add esp, 0xc
push 0xc
push 0x5799a3
push 0x18
push 0x57998b
lea eax, [ebp - 0x28]
push eax
call fcn.004088a0
add esp, 0x14
mov esi, dword [ebp - 0x24]
push dword [ebp - 0x20]
push esi
lea eax, [ebp - 0xcc]
push eax
call fcn.004a28b0
add esp, 0xc
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x402620
push 1
push eax
push esi
call fcn.0040cd20
add esp, 0xc
push edi
push dword [ebp - 0xd0]
lea esi, [ebp - 0xcc]
push esi
call fcn.004a28b0
add esp, 0xc
mov dword [ebp - 0x74], 0x8000000
push esi
lea eax, [ebp - 0x28]
push eax
call fcn.00494a10
add esp, 8
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0xe4], eax
neg eax
jo 0x4032f8
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x10]
mov dword [ebp - 0xdc], ecx
mov ecx, ebx
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0xe0], edx
call fcn.004015d0
mov edi, dword [ebp - 0xf8]
test esi, esi
je 0x403166
call fcn.00456890
mov edi, eax
push 0xc
push 0x579d34
push 0x20
push 0x579d14
push ebx
call fcn.004088a0
add esp, 0x14
mov esi, dword [ebp - 0xc8]
mov eax, dword [ebp - 0xc4]
add eax, esi
push eax
push esi
lea eax, [ebp - 0x60]
push eax
call fcn.0040b460
add esp, 0xc
mov eax, dword [ebp - 0xcc]
test eax, eax
je 0x4026de
push 1
push eax
push esi
call fcn.0040cd20
add esp, 0xc
push 0xc
push 0x579d74
push 0x34
push 0x579d40
lea eax, [ebp - 0xcc]
push eax
call fcn.004088a0
add esp, 0x14
mov esi, dword [ebp - 0xc8]
mov eax, dword [ebp - 0xc4]
lea ecx, [ebp - 0x3c]
add eax, esi
push eax
push esi
push ecx
call fcn.0040b460
add esp, 0xc
mov eax, dword [ebp - 0xcc]
test eax, eax
je 0x40272d
push 1
push eax
push esi
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 1
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x11c], eax
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0xd4], eax
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x402a1f
mov ecx, dword [ebp - 0xd4]
mov edx, dword [ebp - 0x58]
mov ebx, edi
xor esi, esi
add ebx, 0x110
mov dword [ebp - 0x48], ebx
lea eax, [ecx + eax*4]
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x40], eax
lea eax, [edi + 8]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x44], eax
jmp 0x4027a6
mov eax, dword [ebp - 0x24]
mov byte [eax + esi], bl
inc esi
mov dword [ebp - 0x20], esi
add ecx, 4
cmp ecx, dword [ebp - 0x40]
je 0x402a1f
mov ebx, dword [ecx]
cmp ebx, 0x77
jg 0x4027d0
cmp ebx, 0x2d
je 0x4027bb
cmp ebx, 0x34
jne 0x403270
cmp esi, dword [ebp - 0x28]
jne 0x402790
jmp 0x402919
cmp ebx, 0x78
mov dword [ebp - 0x2c], ecx
je 0x402870
cmp ebx, 0x79
jne 0x403270
mov ecx, dword [edi + 0x108]
mov esi, dword [ebp - 0x4c]
mov ebx, dword [ebp - 0x48]
jmp 0x402821
mov ecx, ebx
mov edx, esi
call fcn.00405c80
xor ecx, ecx
mov eax, dword [edi + ecx*4 + 8]
inc ecx
mov dword [edi + 0x108], ecx
test eax, 0x10000000
je 0x4028f0
cmp ecx, 0x40
jb 0x40280b
mov eax, dword [edi + 0x148]
mov ecx, dword [edi + 0x14c]
cmp eax, 1
mov edx, ecx
sbb edx, 0
jl 0x402800
cmp dword [edi + 0x150], 0
js 0x402800
add eax, 0xffffff00
mov edx, esi
adc ecx, 0xffffffff
mov dword [edi + 0x148], eax
mov dword [edi + 0x14c], ecx
mov ecx, ebx
call fcn.00405d70
jmp 0x402809
mov ecx, dword [edi + 0x108]
mov esi, dword [ebp - 0x4c]
mov ebx, dword [ebp - 0x48]
jmp 0x40289d
mov ecx, ebx
mov edx, esi
call fcn.00405c80
xor ecx, ecx
mov eax, dword [edi + ecx*4 + 8]
inc ecx
mov dword [edi + 0x108], ecx
test eax, 0x8000000
je 0x4028e0
cmp ecx, 0x40
jb 0x40288b
mov eax, dword [edi + 0x148]
mov ecx, dword [edi + 0x14c]
cmp eax, 1
mov edx, ecx
sbb edx, 0
jl 0x402880
cmp dword [edi + 0x150], 0
js 0x402880
add eax, 0xffffff00
mov edx, esi
adc ecx, 0xffffffff
mov dword [edi + 0x148], eax
mov dword [edi + 0x14c], ecx
mov ecx, ebx
call fcn.00405d70
jmp 0x402889
shr eax, 0x1c
cmp eax, dword [ebp - 0x30]
jb 0x4028ff
jmp 0x403262
shr eax, 0x1d
or eax, 8
cmp eax, dword [ebp - 0x30]
jae 0x403254
mov ecx, dword [ebp - 0x44]
mov ebx, dword [ecx + eax*4]
cmp ebx, 0x7f
ja 0x402930
mov esi, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x2c]
cmp esi, dword [ebp - 0x28]
jne 0x402790
lea eax, [ebp - 0x28]
push eax
mov dword [ebp - 0x2c], ecx
call fcn.00408ba0
mov ecx, dword [ebp - 0x2c]
add esp, 4
jmp 0x402790
mov eax, ebx
cmp ebx, 0x800
mov dword [ebp - 0xcc], 0
jae 0x402962
shr eax, 6
and bl, 0x3f
mov esi, 2
or al, 0xc0
or bl, 0x80
mov byte [ebp - 0xcc], al
mov byte [ebp - 0xcb], bl
jmp 0x4029d1
cmp ebx, 0x10000
jae 0x402997
shr eax, 0xc
mov esi, 3
or al, 0xe0
mov byte [ebp - 0xcc], al
mov eax, ebx
and bl, 0x3f
shr eax, 6
or bl, 0x80
and al, 0x3f
or al, 0x80
mov byte [ebp - 0xcb], al
mov byte [ebp - 0xca], bl
jmp 0x4029d1
shr eax, 0x12
mov esi, 4
or al, 0xf0
mov byte [ebp - 0xcc], al
mov eax, ebx
shr eax, 0xc
and al, 0x3f
or al, 0x80
mov byte [ebp - 0xcb], al
mov eax, ebx
and bl, 0x3f
shr eax, 6
or bl, 0x80
and al, 0x3f
or al, 0x80
mov byte [ebp - 0xca], al
mov byte [ebp - 0xc9], bl
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x20]
sub ecx, eax
cmp ecx, esi
jb 0x402a08
add eax, dword [ebp - 0x24]
push esi
lea ecx, [ebp - 0xcc]
push ecx
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
add esi, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x20], esi
add ecx, 4
cmp ecx, dword [ebp - 0x40]
jne 0x4027a6
jmp 0x402a1f
push 1
push 1
push esi
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.00408d80
add esp, 0x14
mov eax, dword [ebp - 0x20]
jmp 0x4029dd
mov eax, dword [ebp - 0x11c]
test eax, eax
je 0x402a3d
shl eax, 2
push 4
push eax
push dword [ebp - 0xd4]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x20]
movsd xmm0, qword [ebp - 0x28]
mov dword [ebp - 0x148], eax
mov eax, dword [ebp - 0x60]
movsd qword [ebp - 0x150], xmm0
test eax, eax
je 0x402a6b
shl eax, 2
push 4
push eax
push dword [ebp - 0x5c]
call fcn.0040cd20
add esp, 0xc
dec dword [edi]
jne 0x402a84
dec dword [edi + 4]
jne 0x402a84
push 8
push 0x158
push edi
call fcn.0040cd20
add esp, 0xc
lea esi, [ebp - 0x18c]
push 0xc
push 0x5799f0
push 0x30
push 0x5799c0
push esi
call fcn.004088a0
add esp, 0x14
mov dword [ebp - 0x28], esi
lea eax, [ebp - 0x150]
lea esi, [ebp - 0x28]
lea edi, [ebp - 0xcc]
mov dword [ebp - 0x24], 0x401fe0
mov dword [ebp - 0xcc], 0x579a00
mov dword [ebp - 0xc8], 3
mov dword [ebp - 0xbc], 0
mov dword [ebp - 0x20], eax
mov dword [ebp - 0xc4], esi
mov dword [ebp - 0x1c], 0x401fe0
mov dword [ebp - 0xc0], 2
lea eax, [ebp - 0x12c]
push edi
push eax
call fcn.004d0480
add esp, 8
lea eax, [ebp - 0x138]
push 0xc
push 0x579a91
push 0x79
push 0x579a18
push eax
call fcn.004088a0
add esp, 0x14
lea eax, [ebp - 0x15c]
push 0xc
push 0x579b21
push 0x84
push 0x579a9d
push eax
call fcn.004088a0
add esp, 0x14
lea eax, [ebp - 0x144]
push 0xc
push 0x579b4b
push 0x1e
push 0x579b2d
push eax
call fcn.004088a0
add esp, 0x14
lea eax, [ebp - 0x168]
push 0xc
push 0x579b7d
push 0x26
push 0x579b57
push eax
call fcn.004088a0
add esp, 0x14
push 0xc
push 0x579c0c
push 0x83
push 0x579b89
lea eax, [ebp - 0x10c]
push eax
call fcn.004088a0
add esp, 0x14
push 0xc
push 0x579c39
push 0x21
push 0x579c18
lea eax, [ebp - 0x118]
push eax
call fcn.004088a0
add esp, 0x14
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0xcc], 0
call sub.kernel32.dll_GetCurrentProcess
lea ecx, [ebp - 0x3c]
push ecx
push 8
push eax
call sub.advapi32.dll_OpenProcessToken
test eax, eax
je 0x402de0
push edi
push 4
push esi
push 0x14
push dword [ebp - 0x3c]
call sub.advapi32.dll_GetTokenInformation
mov esi, eax
push dword [ebp - 0x3c]
call sub.kernel32.dll_CloseHandle
test esi, esi
lea esi, [ebp - 0x28]
je 0x402de0
cmp dword [ebp - 0x28], 0
je 0x402de0
mov eax, dword [ebp - 0x54]
mov ebx, dword [ebp - 0x134]
mov edi, dword [ebp - 0x130]
lea ecx, [ebp - 0xcc]
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 1
mov dword [ebp - 0xb0], 0
mov dword [ebp - 0xbc], 0x20
mov byte [ebp - 0xac], 3
mov dword [ebp - 0xcc], 0
mov dword [ebp - 0xc4], 0
mov dword [ebp - 0xb8], esi
mov dword [ebp - 0x20], 0
mov dword [ebp - 0xb4], 0x501000
mov dword [ebp - 0x100], eax
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0xfc], eax
lea eax, [ebp - 0x100]
push ecx
push eax
call fcn.00494370
add esp, 8
test al, al
jne 0x403319
mov eax, dword [ebp - 0x28]
lea esi, [ebp - 0x60]
mov dword [ebp - 0x2c], ebx
mov edx, ebx
mov ecx, esi
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x24]
mov ebx, eax
push dword [ebp - 0x20]
push eax
push edi
call fcn.00401870
add esp, 0xc
mov edx, dword [ebp - 0x140]
mov eax, dword [ebp - 0x128]
lea edi, [ebp - 0x3c]
mov ecx, edi
mov dword [ebp - 0x48], edx
push dword [ebp - 0x124]
mov dword [ebp - 0x4c], eax
push eax
push dword [ebp - 0x13c]
call fcn.00401870
add esp, 0xc
lea eax, [ebp - 0x15c]
mov dword [ebp - 0xcc], esi
mov dword [ebp - 0xc8], 0x401fe0
mov dword [ebp - 0x28], 0x579c70
mov dword [ebp - 0x24], 6
mov dword [ebp - 0x18], 0
mov dword [ebp - 0xc4], eax
lea eax, [ebp - 0x168]
mov dword [ebp - 0xc0], 0x401fe0
mov dword [ebp - 0xbc], edi
mov dword [ebp - 0xb8], 0x401fe0
mov dword [ebp - 0xb4], eax
lea eax, [ebp - 0x10c]
mov dword [ebp - 0xb0], 0x401fe0
mov dword [ebp - 0xac], eax
lea eax, [ebp - 0x118]
mov dword [ebp - 0xa8], 0x401fe0
mov dword [ebp - 0xa4], eax
lea eax, [ebp - 0xcc]
mov dword [ebp - 0xa0], 0x401fe0
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0x28]
mov dword [ebp - 0x1c], 6
push eax
lea edi, [ebp - 0x174]
push edi
call fcn.004d0480
add esp, 8
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x402db7
push 1
push eax
push dword [ebp - 0x38]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x60]
test eax, eax
je 0x402dcc
push 1
push eax
push dword [ebp - 0x5c]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x40]
test eax, eax
je 0x402f9a
push 1
push eax
push ebx
jmp 0x402f92
mov eax, dword [ebp - 0x130]
mov edi, dword [ebp - 0x134]
lea ecx, [ebp - 0xcc]
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 1
mov dword [ebp - 0xb0], 0
mov dword [ebp - 0xbc], 0x20
mov byte [ebp - 0xac], 3
mov dword [ebp - 0xcc], 0
mov dword [ebp - 0xc4], 0
mov dword [ebp - 0xb8], esi
mov dword [ebp - 0x20], 0
mov dword [ebp - 0xb4], 0x501000
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x100], eax
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0xfc], eax
lea eax, [ebp - 0x100]
push ecx
push eax
call fcn.00494370
add esp, 8
test al, al
jne 0x403319
mov eax, dword [ebp - 0x28]
lea ebx, [ebp - 0x60]
mov dword [ebp - 0x2c], edi
mov edx, edi
mov ecx, ebx
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x24]
push dword [ebp - 0x20]
mov dword [ebp - 0x44], eax
push eax
push dword [ebp - 0x40]
call fcn.00401870
add esp, 0xc
mov edx, dword [ebp - 0x140]
mov eax, dword [ebp - 0x128]
lea edi, [ebp - 0x3c]
mov ecx, edi
mov dword [ebp - 0x48], edx
push dword [ebp - 0x124]
mov dword [ebp - 0x4c], eax
push eax
push dword [ebp - 0x13c]
call fcn.00401870
add esp, 0xc
lea eax, [ebp - 0x15c]
lea ecx, [ebp - 0x168]
mov dword [ebp - 0xcc], ebx
mov dword [ebp - 0xc8], 0x401fe0
lea edx, [ebp - 0x10c]
mov dword [ebp - 0x28], 0x579c48
mov dword [ebp - 0x24], 5
mov dword [ebp - 0x18], 0
mov dword [ebp - 0xc4], eax
mov dword [ebp - 0xc0], 0x401fe0
mov dword [ebp - 0xbc], edi
mov dword [ebp - 0xb8], 0x401fe0
mov dword [ebp - 0xb4], ecx
lea ecx, [ebp - 0xcc]
lea edi, [ebp - 0x174]
mov dword [ebp - 0xb0], 0x401fe0
mov dword [ebp - 0xac], edx
mov dword [ebp - 0xa8], 0x401fe0
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], 5
push esi
push edi
call fcn.004d0480
add esp, 8
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x402f70
push 1
push eax
push dword [ebp - 0x38]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x60]
test eax, eax
je 0x402f85
push 1
push eax
push dword [ebp - 0x5c]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x402f9a
push 1
push eax
push dword [ebp - 0x44]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [edi]
mov ebx, dword [edi + 4]
mov edi, dword [edi + 8]
mov dword [ebp - 0x40], eax
push 0xc
push 0x579cba
push 0x1a
push 0x579ca0
lea eax, [ebp - 0x28]
push eax
call fcn.004088a0
add esp, 0x14
mov esi, dword [ebp - 0x24]
push dword [ebp - 0x20]
push esi
lea eax, [ebp - 0xcc]
push eax
call fcn.004a27e0
add esp, 0xc
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x402fe8
push 1
push eax
push esi
call fcn.0040cd20
add esp, 0xc
push edi
mov dword [ebp - 0x44], ebx
push ebx
lea esi, [ebp - 0xcc]
push esi
call fcn.004a28b0
add esp, 0xc
mov dword [ebp - 0x74], 0x8000000
push esi
lea eax, [ebp - 0x28]
push eax
call fcn.00494a10
add esp, 8
mov esi, dword [ebp - 0x28]
mov eax, esi
neg eax
jo 0x403333
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x24]
mov edi, dword [ebp - 0x1c]
mov dword [ebp - 0x30], ecx
lea ecx, [ebp - 0xcc]
mov dword [ebp - 0x50], eax
call fcn.004015d0
test esi, esi
je 0x40304a
push 1
push esi
push ebx
call fcn.0040cd20
add esp, 0xc
test edi, edi
je 0x40305c
push 1
push edi
push dword [ebp - 0x50]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x40]
mov ebx, dword [ebp - 0x2c]
test eax, eax
je 0x403074
push 1
push eax
push dword [ebp - 0x44]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x118]
mov edi, dword [ebp - 0xf8]
test eax, eax
je 0x403095
push 1
push eax
push dword [ebp - 0x114]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x10c]
test eax, eax
je 0x4030b0
push 1
push eax
push dword [ebp - 0x108]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x168]
test eax, eax
je 0x4030cb
push 1
push eax
push dword [ebp - 0x164]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x144]
test eax, eax
je 0x4030e3
push 1
push eax
push dword [ebp - 0x48]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x15c]
test eax, eax
je 0x4030fe
push 1
push eax
push dword [ebp - 0x158]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x138]
test eax, eax
je 0x403114
push 1
push eax
push ebx
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x12c]
test eax, eax
je 0x40312c
push 1
push eax
push dword [ebp - 0x4c]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x18c]
test eax, eax
je 0x403147
push 1
push eax
push dword [ebp - 0x188]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0x150]
test eax, eax
je 0x403162
push 1
push eax
push dword [ebp - 0x14c]
call fcn.0040cd20
add esp, 0xc
cmp dword [ebp - 0x30], 0
mov eax, dword [ebp - 0xe4]
test eax, eax
je 0x403181
push 1
push eax
push dword [ebp - 0xd8]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0xe0]
mov esi, dword [ebp - 0xf0]
test eax, eax
je 0x4031a2
push 1
push eax
push dword [ebp - 0xdc]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0xe8]
test eax, eax
je 0x4031bd
push 1
push eax
push dword [ebp - 0xd0]
call fcn.0040cd20
add esp, 0xc
mov eax, dword [ebp - 0xec]
test eax, eax
je 0x4031d5
push 1
push eax
push dword [ebp - 0x54]
call fcn.0040cd20
add esp, 0xc
test esi, esi
je 0x4031ea
push 1
push esi
push dword [ebp - 0x120]
call fcn.0040cd20
add esp, 0xc
call fcn.00402040
test edi, edi
je 0x40321c
mov eax, dword [ebp - 0xf4]
lea esi, [eax + 4]
jmp 0x403206
add esi, 0xc
dec edi
je 0x40321c
mov eax, dword [esi - 4]
test eax, eax
je 0x403200
push 1
push eax
push dword [esi]
call fcn.0040cd20
add esp, 0xc
jmp 0x403200
mov eax, dword [ebp - 0x180]
test eax, eax
je 0x40323d
shl eax, 2
lea eax, [eax + eax*2]
push 4
push eax
push dword [ebp - 0xf4]
call fcn.0040cd20
add esp, 0xc
mov eax, 1
add esp, 0x190
pop esi
pop edi
pop ebx
pop ebp
ret
push 0
call fcn.00495570
push 0x579d90
push dword [ebp - 0x30]
push eax
call fcn.004dac50
push 0x579d80
push dword [ebp - 0x30]
push eax
call fcn.004dac50
mov dword [ebp - 0xcc], 4
mov dword [ebp - 0xc8], 0
mov dword [ebp - 0xbc], 0
mov dword [ebp - 0xc4], 4
mov dword [ebp - 0xc0], 0
push 0x579da0
lea eax, [ebp - 0xcc]
push eax
call fcn.004daa80
push 0x579850
push 0
push 1
call fcn.004da970
mov ecx, 0x80000000
mov edx, edi
call fcn.004016e0
push 0x579d04
push 0x13
push str.not_yet_implemented
call fcn.004dab10
lea eax, [ebp - 0x3c]
push 0x50109c
push 0x50112c
push eax
push 0x37
push 0x501018
call fcn.004dafa0
movsd xmm0, qword [ebp - 0x24]
lea eax, [ebp - 0x3c]
movsd qword [ebp - 0x3c], xmm0
push 0x5799b0
push 0x50114c
push eax
push 0
push 1
call fcn.004dafa0
push 0x50109c
push 0x50112c
lea eax, [ebp - 0x3c]
push eax
push 0x37
push 0x501018
call fcn.004dafa0
movsd xmm0, qword [ebp - 0x24]
movsd qword [ebp - 0x3c], xmm0
push 0x579ce0
push 0x50114c
lea eax, [ebp - 0x3c]
push eax
push 0x19
push 0x579cc6
call fcn.004dafa0
nop word [eax + eax]
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x34
call fcn.00403a70
lea esi, [ebp - 0x40]
push esi
call fcn.00483e20
add esp, 4
lea eax, [ebp - 0x24]
push esi
push eax
call fcn.0040b670
add esp, 8
mov eax, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x20]
mov dword [ebp - 0x10], eax
lea eax, [eax*4]
mov dword [ebp - 0x14], esi
lea ebx, [eax + eax*2]
jmp 0x4033aa
add esi, 0xc
add ebx, 0xfffffff4
test cl, cl
jne 0x40341d
test ebx, ebx
je 0x403482
mov eax, dword [esi + 4]
mov edi, dword [esi + 8]
mov dword [ebp - 0x18], eax
push 0xc
push 0x579842
push 0x1c
push 0x579826
lea eax, [ebp - 0x30]
push eax
call fcn.004088a0
add esp, 0x14
mov eax, dword [ebp - 0x2c]
cmp edi, dword [ebp - 0x28]
jne 0x403400
push edi
mov edi, eax
push eax
push dword [ebp - 0x18]
call sub.msvcrt.dll_memcmp
add esp, 0xc
test eax, eax
sete cl
mov eax, dword [ebp - 0x30]
test eax, eax
jne 0x40340b
jmp 0x4033a0
mov edi, eax
xor ecx, ecx
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4033a0
push 1
push eax
push edi
mov edi, ecx
call fcn.0040cd20
mov ecx, edi
add esp, 0xc
jmp 0x4033a0
call fcn.00402040
mov ebx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x14]
test ebx, ebx
je 0x40345c
lea esi, [edi + 4]
jmp 0x403446
add esi, 0xc
dec ebx
je 0x40345c
mov eax, dword [esi - 4]
test eax, eax
je 0x403440
push 1
push eax
push dword [esi]
call fcn.0040cd20
add esp, 0xc
jmp 0x403440
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x403475
shl eax, 2
lea eax, [eax + eax*2]
push 4
push eax
push edi
call fcn.0040cd20
add esp, 0xc
mov eax, 1
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret
push 0
call fcn.00495570
nop dword [eax]