Function at 0x437be0
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4aa98b
mov eax, dword fs:[0]
push eax
sub esp, 0x48c
mov eax, dword [0x4d67e8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [ebp - 0x494], ebx
mov eax, dword [ebp + 8]
mov dword [ebp - 0x474], eax
mov eax, dword [ebx + 0xe0]
cmp eax, dword [ebx + 0xe4]
je 0x43807e
mov eax, dword [ebx + 0x1c]
xor ecx, ecx
mov edx, 4
mov byte [ebp - 0x441], 0
mul edx
mov dword [ebp - 0x488], 0
mov byte [ebp - 0x439], 1
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0043c41d
mov esi, dword [ebx + 0xe0]
add esp, 4
mov edi, eax
mov dword [ebp - 0x478], edi
cmp esi, dword [ebx + 0xe4]
je 0x438003
lea edi, [esi + 0x1030]
mov dword [ebp - 0x450], edi
jmp 0x437c90
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.0047b4a0
mov eax, dword [edi - 0x1028]
add esp, 0xc
add dword [ebx + 0x40], eax
mov eax, dword [edi - 0x1024]
adc dword [ebx + 0x44], eax
lea eax, [edi - 0xe18]
push 0x103
push eax
lea eax, [ebp - 0x218]
push eax
call fcn.00473e30
lea ecx, [ebp - 0x218]
add esp, 0xc
lea edx, [ecx + 2]
lea esp, [esp]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x437ce0
sub ecx, edx
mov eax, 0x103
sar ecx, 1
sub eax, ecx
push eax
lea eax, [edi - 0x1020]
push eax
lea eax, [ebp - 0x218]
push eax
call fcn.00477b48
add esp, 0xc
lea eax, [ebp - 0x218]
push 0
push pe_nt_image_headers32
push 3
push 0
push 1
push 0
push eax
call dword [0x4af1c0]
mov dword [ebp - 0x44c], eax
cmp eax, 0xffffffff
je 0x437d99
lea ecx, [ebp - 0x468]
xorps xmm0, xmm0
push ecx
push eax
movlpd qword [ebp - 0x468], xmm0
call dword [0x4af114]
mov eax, dword [edi - 0x1028]
cmp eax, dword [ebp - 0x468]
jne 0x437d80
mov eax, dword [edi - 0x1024]
cmp eax, dword [ebp - 0x464]
jne 0x437d80
push dword [ebp - 0x44c]
mov dword [esi], 1
call dword [0x4af1b8]
jmp 0x437fdf
push dword [ebp - 0x44c]
call dword [0x4af1b8]
lea eax, [ebp - 0x218]
push eax
call dword [0x4af1e8]
push 0x208
lea eax, [edi - 0x208]
push 0
push eax
call fcn.0047b4a0
add esp, 0xc
lea eax, [ebp - 0x218]
push 0x103
push eax
lea eax, [edi - 0x208]
push eax
call fcn.00473e30
lea ecx, [ebp - 0x218]
add esp, 0xc
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x437dd3
sub ecx, edx
mov eax, 0x103
sar ecx, 1
sub eax, ecx
push eax
lea eax, [ebp - 0x218]
push str..tq_
push eax
call fcn.00477b48
add esp, 0xc
push 0x208
push 0
push edi
call fcn.0047b4a0
add esp, 0xc
lea eax, [ebp - 0x218]
push 0x103
push eax
push edi
call fcn.00473e30
add esp, 0xc
lea edx, [ebp - 0x218]
lea ecx, [ebp - 0x438]
call fcn.0043ba60
lea ecx, [ebp - 0x438]
mov dword [ebp - 4], 0
call fcn.0043b6c0
test al, al
jne 0x437e55
lea ecx, [ebp - 0x438]
call fcn.0043b820
push 0
push 0x40000080
push 4
push 0
push 0
push 0x40000000
lea eax, [ebp - 0x218]
push eax
call dword [0x4af1c0]
mov dword [edi + 0x418], eax
cmp eax, 0xffffffff
je 0x4380b9
push 0x208
lea eax, [ebp - 0x420]
push 0
push eax
call fcn.0047b4a0
add esp, 0xc
lea eax, [edi - 0x208]
push 0x4c2460
push eax
push str._s_s
lea eax, [ebp - 0x420]
push 0x103
push eax
call fcn.00477a74
add esp, 0x14
add edi, 0x208
push 0x208
push 0
push edi
call fcn.0047b4a0
add esp, 0xc
lea eax, [ebp - 0x420]
push 0x103
push eax
push edi
call fcn.00473e30
add esp, 0xc
lea eax, [ebp - 0x420]
push 0
push pe_nt_image_headers32
push 4
push 0
push 1
push 0xc0000000
push eax
call dword [0x4af1c0]
mov edi, dword [ebp - 0x450]
mov dword [edi + 0x41c], eax
cmp eax, 0xffffffff
je 0x4380a6
push 0
lea ecx, [ebp - 0x448]
mov dword [ebp - 0x448], 0
push ecx
push 8
lea ecx, [ebp - 0x480]
xorps xmm0, xmm0
push ecx
push eax
movlpd qword [ebp - 0x480], xmm0
call dword [0x4af1c4]
cmp dword [ebp - 0x448], 8
jne 0x437faa
mov eax, dword [ebp - 0x480]
cmp eax, dword [edi - 0x1028]
jne 0x437f70
mov eax, dword [ebp - 0x47c]
cmp eax, dword [edi - 0x1024]
je 0x437faa
push dword [edi + 0x41c]
call dword [0x4af1b8]
push 0
push pe_nt_image_headers32
push 2
push 0
push 1
push 0xc0000000
lea eax, [ebp - 0x420]
push eax
call dword [0x4af1c0]
mov dword [edi + 0x41c], eax
cmp eax, 0xffffffff
je 0x438085
mov ecx, dword [edi + 0x41c]
lea eax, [edi - 0x1028]
push eax
xor edx, edx
call fcn.0043be30
add esp, 4
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x424], 8
jb 0x437fdf
push dword [ebp - 0x438]
call fcn.0045ec61
add esp, 4
add esi, 0x1460
add edi, 0x1460
mov dword [ebp - 0x450], edi
cmp esi, dword [ebx + 0xe4]
jne 0x437c90
mov edi, dword [ebp - 0x478]
mov eax, dword [ebp - 0x474]
test eax, eax
je 0x438143
push 1
mov dword [ebx + 0x74], eax
lea eax, [ebx + 0x70]
push eax
push 0x43b430
push 0
push dword [ebp + 0xc]
mov dword [ebx + 0x28], 1
call dword [0x4af514]
mov dword [ebp - 0x488], eax
test eax, eax
jne 0x438143
mov esi, dword [ebx + 0xe0]
cmp esi, dword [ebx + 0xe4]
je 0x43807e
lea ecx, [ecx]
mov eax, dword [esi + 0x1448]
mov edi, dword [0x4af1b8]
test eax, eax
je 0x438063
push eax
call edi
mov eax, dword [esi + 0x144c]
test eax, eax
je 0x438070
push eax
call edi
add esi, 0x1460
cmp esi, dword [ebx + 0xe4]
jne 0x438050
xor eax, eax
jmp 0x438881
call dword [0x4af1f0]
push eax
push str.CreateFile_error:__d_n
call fcn.0043bc40
add esp, 8
lea ecx, [ebp - 0x438]
call fcn.0040e450
jmp 0x4380eb
call dword [0x4af1f0]
push eax
push str.CreateFile_error:__d_n
call fcn.0043bc40
jmp 0x4380d1
call dword [0x4af1f0]
push eax
push str.CreateFile_error:__d_n
call fcn.0043bc40
mov byte [ebp - 0x441], 1
add esp, 8
cmp dword [ebp - 0x424], 8
jb 0x4380eb
push dword [ebp - 0x438]
call fcn.0045ec61
add esp, 4
mov esi, dword [ebx + 0xe0]
cmp esi, dword [ebx + 0xe4]
je 0x43812e
lea esp, [esp]
mov eax, dword [esi + 0x1448]
mov edi, dword [0x4af1b8]
test eax, eax
je 0x438113
push eax
call edi
mov eax, dword [esi + 0x144c]
test eax, eax
je 0x438120
push eax
call edi
add esi, 0x1460
cmp esi, dword [ebx + 0xe4]
jne 0x438100
xor eax, eax
mov ecx, 2
cmp byte [ebp - 0x441], al
cmovne eax, ecx
jmp 0x438881
mov ecx, dword [ebx + 0xe4]
xor eax, eax
sub ecx, dword [ebx + 0xe0]
mov dword [ebp - 0x450], eax
mov eax, 0xc907da5
imul ecx
lea ecx, [ebx + 0x24]
sar edx, 8
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x47c], eax
push dword [ecx]
mov dword [ebp - 0x44c], 0
call dword [0x4af11c]
mov edx, dword [ebp - 0x450]
xor eax, eax
imul esi, edx, 0x1460
mov dword [ebp - 0x440], eax
add esi, dword [ebx + 0xe0]
cmp esi, dword [ebx + 0xe4]
je 0x43859c
mov ecx, eax
jmp 0x4381b0
cmp ecx, dword [ebx + 0x14]
jge 0x438227
cmp dword [esi], 1
jne 0x438232
cmp byte [ebx + 0x54], 0
mov eax, dword [esi + 8]
mov dword [ebp - 0x454], eax
lea eax, [ebx + 0x58]
push eax
je 0x4381d5
call dword [0x4af104]
jmp 0x4381e9
call dword [0x4af0fc]
lea ecx, [ebx + 0x58]
push ecx
call dword [0x4af104]
mov byte [ebx + 0x54], 1
mov eax, dword [ebp - 0x454]
cdq
add dword [ebx + 0x38], eax
adc dword [ebx + 0x3c], edx
cmp byte [ebx + 0x54], 0
je 0x438206
lea eax, [ebx + 0x58]
push eax
call dword [0x4af100]
mov eax, dword [ebp - 0x440]
mov ecx, dword [ebp - 0x44c]
add esi, 0x1460
inc ecx
mov dword [ebp - 0x44c], ecx
cmp esi, dword [ebx + 0xe4]
jne 0x4381b0
mov edx, dword [ebp - 0x450]
jmp 0x43859e
cmp dword [esi + 0xc], 0
mov ecx, dword [esi + 8]
jg 0x43832c
jl 0x43824d
cmp ecx, 0xc800
jae 0x43832c
xorps xmm0, xmm0
push 0xaa0
movlpd qword [ebp - 0x490], xmm0
call fcn.00474b1e
add esp, 4
test eax, eax
je 0x43827d
push ecx
push dword [ebx + 0x10]
lea ecx, [ebx + 0x28]
push ecx
push esi
mov ecx, eax
call fcn.00436c20
mov edx, eax
jmp 0x43827f
xor edx, edx
mov ecx, dword [ebp - 0x440]
lea eax, [ebx + 8]
mov dword [edi + ecx*4], edx
mov dword [edx + 8], eax
lea eax, [ebp - 0x490]
push eax
mov eax, dword [edi + ecx*4]
push dword [eax + 0xa4c]
call dword [0x4af114]
mov edx, dword [ebp - 0x440]
mov eax, dword [edi + edx*4]
mov dword [eax + 0x20], 0
mov dword [eax + 0x24], 0
mov ecx, dword [edi + edx*4]
mov eax, dword [esi + 8]
mov dword [ecx + 0x28], eax
mov eax, dword [esi + 0xc]
mov dword [ecx + 0x2c], eax
mov ecx, dword [edi + edx*4]
mov eax, dword [ebp - 0x490]
mov dword [ecx + 0x30], eax
mov eax, dword [ebp - 0x48c]
mov dword [ecx + 0x34], eax
mov eax, dword [edi + edx*4]
mov byte [eax + 0xa98], 0
lea eax, [ebp - 0x470]
push eax
push 0
push dword [edi + edx*4]
push 0x43a1a0
push 0
push 0
call fcn.00477721
mov ecx, dword [ebx + 0x20]
add esp, 0x18
mov edx, dword [ebp - 0x440]
push 0x64
mov dword [ecx + edx*4], eax
call dword [0x4af190]
mov eax, dword [ebp - 0x440]
inc eax
mov dword [ebp - 0x440], eax
jmp 0x43820c
mov edi, dword [ebx + 0x18]
xorps xmm0, xmm0
mov eax, edi
movlpd qword [ebp - 0x468], xmm0
cdq
push edx
push eax
push dword [esi + 0xc]
push ecx
call fcn.00485d30
lea ecx, [edi - 1]
mov dword [ebp - 0x484], eax
mov edi, dword [ebp - 0x478]
mov dword [ebp - 0x454], edx
mov dword [ebp - 0x448], 0
test ecx, ecx
jle 0x438488
mov eax, dword [ebp - 0x440]
lea edx, [eax*4]
mov eax, dword [ebp - 0x464]
mov dword [ebp - 0x458], eax
mov eax, dword [ebp - 0x468]
mov dword [ebp - 0x46c], edx
mov dword [ebp - 0x45c], eax
lea ebx, [ebx]
push 0xaa0
call fcn.00474b1e
add esp, 4
test eax, eax
je 0x4383c3
push ecx
push dword [ebx + 0x10]
lea ecx, [ebx + 0x28]
push ecx
push esi
mov ecx, eax
call fcn.00436c20
jmp 0x4383c5
xor eax, eax
mov edx, dword [ebp - 0x46c]
lea ecx, [ebx + 8]
mov dword [edx + edi], eax
mov dword [eax + 8], ecx
mov eax, dword [edx + edi]
mov ecx, dword [ebp - 0x45c]
mov dword [eax + 0x20], ecx
mov ecx, dword [ebp - 0x458]
mov dword [eax + 0x24], ecx
mov eax, dword [edx + edi]
mov ecx, dword [ebp - 0x484]
mov dword [eax + 0x28], ecx
mov ecx, dword [ebp - 0x454]
mov dword [eax + 0x2c], ecx
mov eax, dword [edx + edi]
mov ecx, dword [ebp - 0x448]
add ecx, dword [ebp - 0x440]
mov byte [eax + 0xa98], 1
mov eax, dword [edx + edi]
mov dword [eax + 0xa9c], ecx
lea eax, [ebp - 0x470]
push eax
push 0
push dword [edx + edi]
push 0x43a1a0
push 0
push 0
call fcn.00477721
mov ecx, dword [ebx + 0x20]
add esp, 0x18
mov edx, dword [ebp - 0x46c]
push 0x64
mov dword [edx + ecx], eax
call dword [0x4af190]
mov ecx, dword [ebp - 0x448]
add dword [ebp - 0x46c], 4
inc ecx
mov eax, dword [ebp - 0x484]
add dword [ebp - 0x45c], eax
mov eax, dword [ebp - 0x454]
adc dword [ebp - 0x458], eax
mov eax, dword [ebx + 0x18]
dec eax
mov dword [ebp - 0x448], ecx
cmp ecx, eax
jl 0x4383a0
jmp 0x4384a0
mov eax, dword [ebp - 0x464]
mov dword [ebp - 0x458], eax
mov eax, dword [ebp - 0x468]
mov dword [ebp - 0x45c], eax
push 0xaa0
call fcn.00474b1e
add esp, 4
test eax, eax
je 0x4384c5
push ecx
push dword [ebx + 0x10]
lea ecx, [ebx + 0x28]
push ecx
push esi
mov ecx, eax
call fcn.00436c20
mov ecx, eax
jmp 0x4384c7
xor ecx, ecx
mov eax, dword [ebx + 0x18]
mov edx, dword [ebp - 0x440]
add eax, edx
mov dword [edi + eax*4 - 4], ecx
lea ecx, [ebx + 8]
mov eax, dword [ebx + 0x18]
add eax, edx
mov eax, dword [edi + eax*4 - 4]
mov dword [eax + 8], ecx
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebp - 0x45c]
add eax, edx
mov eax, dword [edi + eax*4 - 4]
mov dword [eax + 0x20], ecx
mov ecx, dword [ebp - 0x458]
mov dword [eax + 0x24], ecx
mov edx, dword [esi + 8]
mov ecx, dword [esi + 0xc]
sub edx, dword [ebp - 0x45c]
mov eax, dword [ebx + 0x18]
sbb ecx, dword [ebp - 0x458]
add eax, dword [ebp - 0x440]
mov eax, dword [edi + eax*4 - 4]
mov dword [eax + 0x28], edx
mov edx, dword [ebp - 0x440]
mov dword [eax + 0x2c], ecx
mov eax, dword [ebx + 0x18]
add eax, edx
mov eax, dword [edi + eax*4 - 4]
mov byte [eax + 0xa98], 1
mov eax, dword [ebx + 0x18]
lea ecx, [eax - 1]
add eax, edx
mov eax, dword [edi + eax*4 - 4]
mov dword [eax + 0xa9c], ecx
lea eax, [ebp - 0x470]
push eax
mov eax, dword [ebx + 0x18]
add eax, edx
push 0
push dword [edi + eax*4 - 4]
push 0x43a1a0
push 0
push 0
call fcn.00477721
mov edx, dword [ebx + 0x18]
add esp, 0x18
add edx, dword [ebp - 0x440]
mov ecx, dword [ebx + 0x20]
push 0x64
mov dword [ecx + edx*4 - 4], eax
call dword [0x4af190]
mov eax, dword [ebp - 0x440]
add eax, dword [ebx + 0x18]
mov dword [ebp - 0x440], eax
jmp 0x43820c
xor ecx, ecx
add edx, ecx
xor ecx, ecx
mov dword [ebp - 0x450], edx
mov dword [ebp - 0x448], ecx
mov dword [ebp - 0x44c], ecx
cmp ecx, eax
jae 0x4386b6
cmp dword [ebx + 8], 0
jne 0x4386b6
push 0x64
call dword [0x4af190]
push 0xffffffffffffffff
push 0
push dword [ebx + 0x20]
push dword [ebp - 0x440]
call dword [0x4af15c]
mov eax, dword [ebp - 0x440]
xor esi, esi
test eax, eax
je 0x4386a0
cmp dword [ebx + 8], 0
jne 0x438691
lea eax, [ebp - 0x498]
push eax
mov eax, dword [ebx + 0x20]
push dword [eax + esi*4]
call dword [0x4af108]
test eax, eax
je 0x438680
cmp dword [ebp - 0x498], 0x103
je 0x438680
mov eax, dword [edi + esi*4]
cmp dword [eax], 0
jne 0x43864c
lea eax, [ebp - 0x470]
push eax
push 0
lea eax, [ebx + 0x24]
push eax
push 0x43b1c0
push 0
push 0
call fcn.00477721
add esp, 0x18
inc dword [ebp - 0x448]
jmp 0x43867a
push 0x1388
call dword [0x4af190]
lea eax, [ebp - 0x470]
push eax
push 0
push dword [edi + esi*4]
push 0x43a1a0
push 0
push 0
call fcn.00477721
add esp, 0x18
inc dword [ebp - 0x44c]
mov ecx, dword [ebx + 0x20]
mov dword [ecx + esi*4], eax
mov eax, dword [ebp - 0x440]
inc esi
cmp esi, eax
jb 0x4385f1
jmp 0x4386a0
push dword [ebx + 0x24]
call dword [0x4af0f8]
mov eax, dword [ebp - 0x440]
cmp dword [ebp - 0x44c], 0x7fffffff
mov ecx, dword [ebp - 0x448]
jb 0x4385b4
push dword [ebx + 0x24]
call dword [0x4af0f8]
mov esi, dword [ebp - 0x440]
push 0xffffffffffffffff
push 1
push dword [ebx + 0x20]
push esi
call dword [0x4af15c]
mov dword [ebp - 0x454], 0
test esi, esi
je 0x438715
mov ebx, dword [ebp - 0x454]
mov ecx, dword [edi + ebx*4]
mov eax, dword [ecx + 0x30]
cmp eax, dword [ecx + 0x28]
jne 0x4386fa
mov eax, dword [ecx + 0x34]
cmp eax, dword [ecx + 0x2c]
je 0x438701
mov byte [ebp - 0x439], 0
push ecx
call fcn.0045ec61
inc ebx
add esp, 4
cmp ebx, esi
jb 0x4386e7
mov ebx, dword [ebp - 0x494]
mov eax, dword [ebp - 0x450]
cmp eax, dword [ebp - 0x47c]
jge 0x438739
cmp dword [ebx + 8], 0
jne 0x438739
cmp byte [ebp - 0x439], 0
lea ecx, [ebx + 0x24]
jne 0x438171
cmp dword [ebp - 0x474], 0
je 0x438802
push dword [ebp - 0x488]
call dword [0x4af510]
mov edx, dword [ebx + 0xac]
lea esi, [ebx + 0x98]
mov ecx, dword [ebx + 0xa8]
xor eax, eax
xorps xmm0, xmm0
mov dword [esi], 0
movsd qword [ebx + 0xa0], xmm0
mov dword [ebx + 0xb8], eax
mov word [ebx + 0xbc], ax
call fcn.0047bead
mov edx, dword [ebx + 0xb4]
mov ecx, dword [ebx + 0xb0]
movsd qword [ebp - 0x468], xmm0
call fcn.0047bead
cmp byte [ebp - 0x439], 0
movsd xmm1, qword [ebp - 0x468]
divsd xmm1, xmm0
mulsd xmm1, qword [0x4c5658]
cvttsd2si eax, xmm1
mov dword [ebx + 0x9c], eax
je 0x4387eb
mov eax, dword [ebx + 0xb0]
mov dword [ebx + 0xa8], eax
mov eax, dword [ebx + 0xb4]
mov dword [ebx + 0xac], eax
mov dword [ebx + 0x9c], 0x64
push 0x3e7
push esi
push 0x52c
push dword [ebp - 0x474]
call dword [0x4af37c]
mov esi, dword [ebx + 0xe0]
cmp esi, dword [ebx + 0xe4]
je 0x438860
push dword [esi + 0x1448]
call dword [0x4af1b8]
push dword [esi + 0x144c]
call dword [0x4af1b8]
cmp byte [ebp - 0x439], 0
je 0x438852
lea eax, [esi + 0x1238]
push eax
call dword [0x4af1e8]
lea eax, [esi + 0xe28]
push eax
lea eax, [esi + 0x1030]
push eax
call dword [0x4af118]
add esi, 0x1460
cmp esi, dword [ebx + 0xe4]
jne 0x438810
push edi
call fcn.0045ec61
add esp, 4
push str.quit_n
call fcn.0043bc40
xor eax, eax
add esp, 4
cmp byte [ebp - 0x439], al
setne al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004735e9
mov esp, ebp
pop ebp
ret 8