Function at 0x407640
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
and esp, 0xfffffff0
sub esp, 0x60
mov dword [esp + 0xc], 0
mov dword [esp + 4], 0
mov dword [esp + 8], 0
mov dword [esp], eax
mov dword [esp + 0x3c], eax
call fcn.0045a860
mov dword [esp + 0x28], eax
test eax, eax
jne 0x4079bc
mov dword [esp + 0x30], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x1c], 1
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], 1
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
lea eax, [esp + 0x4c]
mov dword [esp], eax
call fcn.0045a310
xor eax, 1
or eax, edx
jne 0x407ef1
movzx ecx, byte [esp + 0x4c]
mov eax, ecx
cmp cl, 0x53
je 0x407748
cmp ecx, 0xd
je 0x407748
cmp ecx, 0xa
je 0x4079d0
cmp al, 0x20
je 0x407850
jbe 0x407998
cmp al, 0x24
jne 0x407998
mov ebx, dword [esp + 0x3c]
nop
lea eax, [esp + 0x4c]
mov dword [esp + 0xc], ebx
mov dword [esp + 4], 1
mov dword [esp + 8], 0
mov dword [esp], eax
call fcn.0045a310
xor eax, 1
or eax, edx
jne 0x407ec5
cmp byte [esp + 0x4c], 0xa
jne 0x407700
add dword [esp + 0x1c], 1
mov dword [esp + 0x30], 0
jmp 0x40769c
cmp al, 0x20
jbe 0x40769c
mov edi, dword [esp + 0x3c]
mov dword [esp], edi
call fcn.0045a6d0
mov dword [esp + 0xc], edi
mov dword [esp + 0x20], eax
lea eax, [esp + 0x49]
mov dword [esp + 4], 3
mov dword [esp + 8], 0
mov dword [esp], eax
mov dword [esp + 0x24], edx
call fcn.0045a310
xor eax, 3
or eax, edx
jne 0x4079ac
movzx eax, byte [esp + 0x4a]
movsx ebx, byte [eax + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
mov ecx, eax
cmp bl, 0x63
je 0x40798f
movzx eax, byte [esp + 0x4b]
mov ecx, eax
movsx eax, byte [eax + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
cmp al, 0x63
je 0x40798f
shl ebx, 4
xor edi, edi
add ebx, eax
lea eax, [ebx + ebx]
mov esi, ebx
shld edi, ebx, 1
mov dword [esp + 0x38], eax
add esi, ebx
cmp dword [esp + 0x10], eax
jae 0x4079e0
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4077ec
mov dword [esp], eax
call sub.msvcrt.dll_free
mov dword [esp], esi
mov dword [esp + 4], edi
call fcn.00403e60
mov dword [esp + 0x2c], eax
test eax, eax
je 0x4079bc
mov eax, dword [esp + 0x3c]
mov dword [esp + 8], edi
xor edi, edi
mov dword [esp + 4], esi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call fcn.0045a310
mov ecx, esi
xor ecx, eax
xor edx, edi
or ecx, edx
jne 0x4079ac
movzx eax, byte [esp + 0x49]
lea edi, [ebx - 1]
sub eax, 0x30
cmp al, 9
ja case.0x407846.4
movzx eax, al
jmp dword [eax*4 + 0x48547c]
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], 1
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
lea eax, [esp + 0x4c]
mov dword [esp], eax
call fcn.0045a310
xor eax, 1
or eax, edx
jne 0x407f1c
movzx esi, byte [esp + 0x4c]
mov eax, esi
movzx ecx, al
cmp al, 0x20
je 0x407850
cmp ecx, 9
je 0x407850
cmp ecx, 0xd
je 0x407cff
cmp ecx, 0xa
je 0x407732
mov dword [esp], 0xb
mov dword [esp + 4], 0
call fcn.00403e60
mov edi, eax
test eax, eax
je 0x4079ac
lea ebx, [eax + 1]
mov eax, esi
mov dword [esp + 0x30], 0xa
mov byte [edi], al
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], edi
jmp 0x4078e5
mov byte [ebx], cl
add ebx, 1
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], 1
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
lea eax, [esp + 0x4c]
mov dword [esp], eax
call fcn.0045a310
xor eax, 1
or eax, edx
jne 0x407d1e
movzx eax, byte [esp + 0x4c]
mov ecx, eax
test byte [eax + eax + 0x4963e0], 0x40
jne 0x407b90
mov eax, dword [esp + 0x38]
mov esi, ebx
mov edi, dword [esp + 0x30]
sub esi, eax
mov eax, esi
cdq
cmp esi, edi
mov eax, edx
sbb eax, dword [esp + 0x34]
jb 0x4078e0
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
mov byte [esp + 0x20], cl
shld edx, eax, 1
add eax, eax
mov dword [esp + 0x30], eax
add eax, 1
mov dword [esp + 4], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x34], edx
adc edx, 0
mov dword [esp + 8], edx
mov dword [esp], eax
call fcn.00403ea0
test eax, eax
je 0x407ea8
mov dword [esp + 0x38], eax
movzx ecx, byte [esp + 0x20]
lea ebx, [eax + esi]
jmp 0x4078e0
movsx ecx, cl
lea esi, [esi]
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x1c]
mov dword [esp], eax
mov eax, dword [esp + 0x3c]
call fcn.00406be0
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4079bc
mov dword [esp], eax
call sub.msvcrt.dll_free
xor eax, eax
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
add dword [esp + 0x1c], 1
jmp 0x40769c
mov eax, dword [esp + 0x10]
mov dword [esp + 0x38], eax
jmp 0x407804
mov eax, dword [esp + 0x2c]
lea edi, [ebx - 2]
lea ecx, [eax + 2]
mov ebx, eax
movzx eax, byte [eax]
movzx edx, byte [ebx + 1]
movsx eax, byte [eax + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
movsx edx, byte [edx + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
shl eax, 4
add eax, edx
cdq
shld edx, eax, 8
shl eax, 8
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
movzx eax, byte [ecx]
lea esi, [ecx + 2]
sub edi, 1
movsx edx, byte [eax + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
movzx eax, byte [ecx + 1]
movsx eax, byte [eax + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
shl edx, 4
add eax, edx
cdq
or eax, dword [esp + 0x10]
or edx, dword [esp + 0x14]
shld edx, eax, 8
shl eax, 8
mov ecx, eax
mov ebx, edx
movzx eax, byte [esi]
movzx edx, byte [esi + 1]
sub edi, 2
movsx eax, byte [eax + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
movsx edx, byte [edx + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
shl eax, 4
add eax, edx
cdq
or ecx, eax
movzx eax, byte [esi + 2]
or ebx, edx
movzx edx, byte [esi + 3]
movsx eax, byte [eax + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
shld ebx, ecx, 8
shl ecx, 8
movsx edx, byte [edx + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
shl eax, 4
add eax, edx
cdq
or eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x30]
or edx, ebx
mov dword [esp + 0x14], edx
test eax, eax
je 0x407ad8
mov ecx, dword [eax + 0x30]
mov esi, eax
mov ebx, dword [eax + 0x34]
mov eax, ecx
add eax, dword [esi + 0x18]
mov edx, ebx
adc edx, dword [esi + 0x1c]
mov esi, eax
mov eax, dword [esp + 0x10]
xor eax, esi
mov esi, dword [esp + 0x14]
xor edx, esi
or eax, edx
je 0x407eb1
mov esi, dword [esp + 0x3c]
mov eax, dword [esi + 0x6c]
mov dword [esp + 4], 0x485473
mov dword [esp + 0x30], eax
add eax, 1
mov dword [esp + 8], eax
lea eax, [esp + 0x4c]
mov dword [esp], eax
call fcn.00406b30
lea eax, [esp + 0x4c]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov dword [esp + 8], 0
add eax, 1
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.00404cf0
mov ebx, eax
lea eax, [esp + 0x4c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sub.msvcrt.dll_strcpy
mov dword [esp + 4], ebx
mov dword [esp], esi
call fcn.004055c0
mov dword [esp + 0x30], eax
mov ebx, eax
test eax, eax
je 0x4079ac
movq xmm0, qword [esp + 0x10]
mov edx, dword [esp + 0x24]
mov dword [eax + 0x30], edi
mov dword [eax + 0x10], 0x203
punpcklqdq xmm0, xmm0
mov dword [eax + 0x34], 0
movups xmmword [eax + 0x18], xmm0
mov eax, dword [esp + 0x20]
add eax, 0xffffffff
adc edx, 0xffffffff
mov dword [ebx + 0x58], eax
mov dword [ebx + 0x5c], edx
mov eax, dword [esp + 0x38]
mov dword [esp + 0x10], eax
jmp 0x40769c
mov edi, dword [esp + 0x38]
add ebx, 1
mov eax, dword [esp + 0x3c]
mov byte [ebx - 1], 0
sub ebx, edi
mov dword [esp], eax
mov dword [esp + 4], ebx
sar ebx, 0x1f
mov dword [esp + 8], ebx
call fcn.00404cf0
mov ebx, eax
test eax, eax
je 0x407d40
mov dword [esp + 4], edi
mov dword [esp], eax
call sub.msvcrt.dll_strcpy
mov dword [esp], edi
call sub.msvcrt.dll_free
lea esi, [esi]
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], 1
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
lea eax, [esp + 0x4c]
mov dword [esp], eax
call fcn.0045a310
xor eax, 1
or eax, edx
jne 0x407f1c
movzx ecx, byte [esp + 0x4c]
cmp ecx, 0x20
je 0x407bd8
cmp ecx, 9
je 0x407bd8
cmp ecx, 0x24
je 0x407e69
movsx eax, byte [ecx + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
xor esi, esi
xor edi, edi
cmp al, 0x63
je 0x407c8d
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x3c]
lea esi, cs:[esi]
nop
shld edi, esi, 4
shl esi, 4
cdq
mov dword [esp + 0xc], ebx
add esi, eax
lea eax, [esp + 0x4c]
mov dword [esp + 4], 1
mov dword [esp + 8], 0
adc edi, edx
mov dword [esp], eax
call fcn.0045a310
xor eax, 1
or eax, edx
jne 0x407f4f
movzx ecx, byte [esp + 0x4c]
mov eax, ecx
movsx eax, byte [eax + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
cmp al, 0x63
jne 0x407c40
mov ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], 0x10
mov dword [esp + 8], 0
mov dword [esp], eax
mov dword [esp + 0x30], ecx
call fcn.00404cf0
test eax, eax
je 0x4079ac
mov dword [eax + 0xc], edi
mov edi, dword [esp + 0x3c]
mov dword [eax + 4], ebx
mov edx, dword [edi + 0xa4]
mov dword [eax + 8], esi
mov ecx, dword [edx + 0xc]
test ecx, ecx
mov ecx, dword [esp + 0x30]
je 0x407f47
mov ebx, dword [edx + 0x10]
mov dword [ebx], eax
mov dword [edx + 0x10], eax
mov dword [eax], 0
mov eax, dword [esp + 0x3c]
add dword [eax + 0x78], 1
cmp ecx, 0x20
je 0x407850
cmp ecx, 9
je 0x407850
cmp ecx, 0xa
je 0x407732
cmp ecx, 0xd
jne 0x407998
mov dword [esp + 0x30], 0
jmp 0x40769c
mov edi, dword [esp + 0x38]
call fcn.00402b80
cmp eax, 0x11
jne 0x407d40
mov ebx, dword [esp + 0x28]
test ebx, ebx
jne 0x407d40
mov dword [esp], 0x11
call fcn.00402b90
test edi, edi
je 0x4079ac
mov dword [esp], edi
call sub.msvcrt.dll_free
jmp 0x4079ac
mov dword [esp + 0x30], 0
jmp case.0x407846.4
mov edi, dword [esp + 0x2c]
movzx eax, byte [edi]
movzx edx, byte [edi + 1]
lea ebx, [edi + 2]
movsx eax, byte [eax + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
movsx edx, byte [edx + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
shl eax, 4
add eax, edx
cdq
shld edx, eax, 8
shl eax, 8
movzx ecx, byte [ebx]
lea esi, [ebx + 2]
movzx ebx, byte [ebx + 1]
movsx ecx, byte [ecx + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
movsx ebx, byte [ebx + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
shl ecx, 4
add ecx, ebx
mov ebx, ecx
or ecx, eax
sar ebx, 0x1f
or ebx, edx
shld ebx, ecx, 8
shl ecx, 8
movzx eax, byte [esi]
movzx edx, byte [esi + 1]
movsx eax, byte [eax + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
movsx edx, byte [edx + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
shl eax, 4
add eax, edx
cdq
or eax, ecx
movzx ecx, byte [esi + 2]
or edx, ebx
movzx ebx, byte [esi + 3]
movsx ecx, byte [ecx + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
shld edx, eax, 8
shl eax, 8
movsx ebx, byte [ebx + str.cccccccccccccccccccccccccccccccccccccccccccccccc]
shl ecx, 4
add ecx, ebx
mov ebx, ecx
or ecx, eax
mov eax, dword [esp + 0x3c]
sar ebx, 0x1f
or ebx, edx
mov dword [eax + 0x70], ecx
mov dword [eax + 0x74], ebx
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x407e1f
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, 1
jmp 0x4079be
mov ebx, dword [esp + 0x2c]
xor eax, eax
xor edx, edx
jmp 0x407d8e
mov esi, dword [esp + 0x2c]
xor ecx, ecx
xor ebx, ebx
jmp 0x407dbb
mov esi, dword [esp + 0x2c]
xor ecx, ecx
xor ebx, ebx
jmp 0x407a57
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x14], 0
jmp 0x407a23
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], 1
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
lea eax, [esp + 0x4c]
mov dword [esp], eax
call fcn.0045a310
xor eax, 1
or eax, edx
jne 0x407f1c
movzx ecx, byte [esp + 0x4c]
jmp 0x407c1f
mov edi, dword [esp + 0x38]
jmp 0x407d40
mov eax, dword [esp + 0x30]
add ecx, edi
adc ebx, 0
mov dword [eax + 0x30], ecx
mov dword [eax + 0x34], ebx
jmp case.0x407846.4
call fcn.00402b80
mov edx, dword [esp + 0x1c]
mov ecx, 0xffffffff
cmp eax, 0x11
mov eax, 1
cmove eax, dword [esp + 0x28]
mov dword [esp], eax
mov eax, dword [esp + 0x3c]
call fcn.00406be0
jmp 0x4079ac
call fcn.00402b80
cmp eax, 0x11
jne 0x4079ac
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x4079ac
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x407e17
jmp 0x407e1f
call fcn.00402b80
cmp eax, 0x11
jne 0x4079ac
mov ecx, dword [esp + 0x28]
test ecx, ecx
jne 0x4079ac
mov dword [esp], 0x11
call fcn.00402b90
jmp 0x4079ac
mov dword [edx + 0xc], eax
jmp 0x407cdc
call fcn.00402b80
mov ecx, 0xffffffff
mov edx, eax
mov eax, 0xff
cmp edx, 0x11
mov edx, 1
cmove edx, dword [esp + 0x28]
mov dword [esp + 0x28], edx
jmp 0x407c7e