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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
push ebx
push esi
push edi
mov edi, edx
mov dword [edi], 0
call fcn.00409010
test eax, eax
jns 0x409716
mov eax, 0xb
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [eax*4 + 0x448bd8]
test esi, esi
jne 0x40972b
lea eax, [esi + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [edi], esi
cmp byte [esi], 0
jne 0x409f28
mov ecx, esi
mov byte [esi], 0
mov byte [esi + 1], al
call fcn.00409390
mov edx, 1
cmp eax, 4
je 0x409b63
cmp eax, 2
jae 0x409f31
mov edi, dword [esi + 0x50]
cmp eax, edx
jne 0x409b87
mov eax, 0xb
nop word [eax + eax]
cmp byte [esi + eax + 0x58], 0
jne 0x409f31
inc eax
cmp eax, 0x40
jb 0x409770
movzx ecx, byte [esi + 0xc1]
movzx eax, byte [esi + 0xc0]
shl cx, 8
or cx, ax
mov eax, 0x100
cmp cx, ax
jne 0x409f31
mov cl, byte [esi + 0xc4]
mov eax, edx
shl eax, cl
cmp eax, 0x200
jne 0x409f31
movzx eax, byte [esi + 0xa7]
cdq
mov ecx, eax
mov ebx, edx
shld ebx, ecx, 8
movzx eax, byte [esi + 0xa6]
shl ecx, 8
cdq
or ecx, eax
or ebx, edx
movzx eax, byte [esi + 0xa5]
shld ebx, ecx, 8
cdq
shl ecx, 8
or ebx, edx
or ecx, eax
movzx eax, byte [esi + 0xa4]
shld ebx, ecx, 8
cdq
shl ecx, 8
or ebx, edx
or ecx, eax
movzx eax, byte [esi + 0xa3]
shld ebx, ecx, 8
cdq
shl ecx, 8
or ebx, edx
or ecx, eax
movzx eax, byte [esi + 0xa2]
shld ebx, ecx, 8
cdq
shl ecx, 8
or ebx, edx
or ecx, eax
movzx eax, byte [esi + 0xa1]
shld ebx, ecx, 8
cdq
shl ecx, 8
or ebx, edx
or ecx, eax
movzx eax, byte [esi + 0xa0]
shld ebx, ecx, 8
cdq
shl ecx, 8
or ebx, edx
or ecx, eax
mov dword [ebp - 0x18], ebx
movzx eax, byte [esi + 0xae]
mov dword [ebp - 0x14], ecx
movzx ecx, byte [esi + 0xaf]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0xad]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0xac]
shl ecx, 8
or ecx, eax
mov dword [esi + 0x20], ecx
mov al, byte [esi + 0xc6]
mov byte [esi + 2], al
cmp al, 1
jne 0x409f31
mov cl, byte [esi + 0xc5]
mov eax, 1
shl ax, cl
movzx ecx, ax
mov dword [ebp - 8], ecx
mov word [esi + 0xa], ax
test ax, ax
je 0x409f31
movzx ecx, byte [esi + 0xb7]
movzx eax, byte [esi + 0xb6]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0xb5]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0xb4]
shl ecx, 8
or ecx, eax
mov dword [ebp - 0xc], ecx
cmp ecx, 0x7ffffffd
ja 0x409f31
lea eax, [ecx + 2]
mov dword [esi + 0x28], edi
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x54]
mov dword [esi + 0x2c], eax
movzx eax, byte [esi + 0xb3]
cdq
mov ebx, eax
mov ecx, edx
movzx eax, byte [esi + 0xb2]
shld ecx, ebx, 8
cdq
or ecx, edx
shl ebx, 8
or ebx, eax
movzx eax, byte [esi + 0xb1]
shld ecx, ebx, 8
cdq
or ecx, edx
shl ebx, 8
or ebx, eax
movzx eax, byte [esi + 0xb0]
shld ecx, ebx, 8
cdq
or ecx, edx
shl ebx, 8
or ebx, eax
add ebx, edi
mov dword [esi + 0x40], ebx
adc ecx, dword [esi + 0x54]
mov dword [esi + 0x44], ecx
movzx eax, byte [esi + 0xab]
mov dword [ebp - 0x10], ecx
cdq
mov ecx, eax
mov edi, edx
movzx eax, byte [esi + 0xaa]
shld edi, ecx, 8
cdq
or edi, edx
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0xa9]
shld edi, ecx, 8
cdq
or edi, edx
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0xa8]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
mov edx, dword [ebp - 0x18]
or ecx, eax
add ecx, dword [esi + 0x50]
mov eax, dword [ebp - 8]
adc edi, dword [esi + 0x54]
mov dword [esi + 0x34], edi
movzx edi, ax
xor eax, eax
imul edi, dword [ebp - 0xc]
mov dword [esi + 0x30], ecx
mov ecx, dword [ebp - 0x14]
add edi, ebx
adc eax, dword [ebp - 0x10]
add ecx, dword [esi + 0x50]
adc edx, dword [esi + 0x54]
cmp edx, eax
jb 0x409f31
ja 0x4099cc
cmp ecx, edi
jb 0x409f31
movzx eax, byte [esi + 0xbb]
xor ebx, ebx
cdq
mov ecx, eax
mov edi, edx
movzx eax, byte [esi + 0xba]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
movzx eax, byte [esi + 0xb9]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
movzx eax, byte [esi + 0xb8]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
mov dword [esi + 0x3c], edi
xor eax, eax
mov dword [esi + 0x38], ecx
mov dword [ebp - 8], eax
nop
test ebx, ebx
jne 0x409a8f
movzx ecx, word [esi + 0xa]
cmp eax, ecx
jae 0x409f31
mov edi, dword [esi + 0x38]
mov eax, dword [esi + 0x1c]
sub edi, 2
sub eax, 2
mov dword [ebp - 0x18], edi
cmp edi, eax
jb 0x409a53
xorps xmm0, xmm0
movlpd qword [ebp - 0x24], xmm0
mov edi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x24]
jmp 0x409a6b
mov eax, ecx
cdq
mov ecx, eax
mov eax, edx
mul edi
mov edi, eax
mov eax, ecx
mul dword [ebp - 0x18]
add edi, edx
add eax, dword [esi + 0x40]
adc edi, dword [esi + 0x44]
mov edx, dword [ebp - 8]
xor ecx, ecx
add edx, eax
adc ecx, edi
push ecx
push edx
mov ecx, esi
call fcn.00407ec0
add esp, 8
test eax, eax
jne 0x409b63
mov eax, dword [ebp - 8]
inc eax
mov dword [ebp - 8], eax
cmp byte [ebx + esi + 0x58], 0x81
je 0x409aa4
add ebx, 0x20
and ebx, 0x1ff
jmp 0x409a20
movzx edi, byte [ebx + esi + 0x6f]
movzx eax, byte [ebx + esi + 0x6e]
shl edi, 8
or edi, eax
movzx eax, byte [ebx + esi + 0x6d]
shl edi, 8
or edi, eax
movzx eax, byte [ebx + esi + 0x6c]
shl edi, 8
or edi, eax
cmp edi, 2
jb 0x409f31
cmp edi, dword [esi + 0x1c]
jae 0x409f31
movzx eax, word [esi + 0xa]
lea ecx, [edi - 2]
imul ecx, eax
xor eax, eax
add ecx, dword [esi + 0x40]
mov dword [esi + 0x48], ecx
mov ecx, edi
adc eax, dword [esi + 0x44]
mov dword [esi + 0x4c], eax
xor eax, eax
shr ecx, 7
add ecx, dword [esi + 0x30]
adc eax, dword [esi + 0x34]
push eax
push ecx
mov ecx, esi
call fcn.00407ec0
add esp, 8
test eax, eax
jne 0x409b63
nop
mov eax, edi
and eax, 0x7f
movzx edx, byte [esi + eax*4 + 0x5b]
lea ecx, [esi + eax*4]
movzx eax, byte [ecx + 0x5a]
shl edx, 8
or edx, eax
movzx eax, byte [ecx + 0x59]
shl edx, 8
or edx, eax
movzx eax, byte [ecx + 0x58]
shl edx, 8
or edx, eax
cmp edx, 0xffffffff
je 0x409b6f
inc edi
cmp edx, edi
jne 0x409f31
mov ecx, edi
xor eax, eax
shr ecx, 7
add ecx, dword [esi + 0x30]
adc eax, dword [esi + 0x34]
push eax
push ecx
mov ecx, esi
call fcn.00407ec0
add esp, 8
test eax, eax
je 0x409b10
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esi + 0x18], 0xffffffff
mov ebx, 4
mov dword [esi + 0x14], 0xffffffff
jmp 0x409f14
movzx ecx, byte [esi + 0x64]
movzx eax, byte [esi + 0x63]
shl cx, 8
or cx, ax
mov eax, 0x200
cmp cx, ax
jne 0x409f31
movzx ecx, byte [esi + 0x6f]
movzx eax, byte [esi + 0x6e]
shl ecx, 8
or ecx, eax
jne 0x409bd2
movzx ecx, byte [esi + 0x7f]
movzx eax, byte [esi + 0x7e]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0x7d]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0x7c]
shl ecx, 8
or ecx, eax
mov dword [esi + 0x20], ecx
mov al, byte [esi + 0x68]
mov byte [esi + 2], al
cmp al, 1
je 0x409be7
cmp al, 2
jne 0x409f31
movzx eax, al
imul eax, ecx
mov dword [ebp - 8], eax
movzx eax, byte [esi + 0x65]
mov word [esi + 0xa], ax
test ax, ax
je 0x409f31
mov ecx, eax
mov dword [ebp - 0x18], ecx
lea eax, [ecx - 1]
test ecx, eax
jne 0x409f31
movzx ebx, byte [esi + 0x6a]
movzx eax, byte [esi + 0x69]
shl bx, 8
or bx, ax
mov word [esi + 8], bx
test bl, 0xf
jne 0x409f31
movzx edx, byte [esi + 0x6c]
movzx eax, byte [esi + 0x6b]
shl edx, 8
or edx, eax
jne 0x409c5b
movzx edx, byte [esi + 0x7b]
movzx eax, byte [esi + 0x7a]
shl edx, 8
or edx, eax
movzx eax, byte [esi + 0x79]
shl edx, 8
or edx, eax
movzx eax, byte [esi + 0x78]
shl edx, 8
or edx, eax
movzx ecx, byte [esi + 0x67]
movzx eax, byte [esi + 0x66]
shl cx, 8
or cx, ax
movzx edi, cx
movzx eax, cx
mov dword [ebp - 0x14], eax
test di, di
je 0x409f31
movzx eax, bx
movzx ecx, ax
mov dword [ebp - 0xc], ecx
movzx ecx, ax
shr ecx, 4
add ecx, dword [ebp - 8]
add edi, ecx
mov dword [ebp - 0x10], eax
cmp edx, edi
jb 0x409f31
sub edx, edi
mov eax, edx
xor edx, edx
div dword [ebp - 0x18]
mov dword [ebp - 0x18], eax
test eax, eax
je 0x409f31
mov ecx, 0xffffff5
cmp ecx, eax
mov ecx, 2
sbb ebx, ebx
and ebx, 0xfffffffd
add ebx, 3
cmp eax, 0xfff5
cmovbe ebx, ecx
cmp eax, 0xff5
ja 0x409cd7
lea ebx, [ecx - 1]
jmp 0x409cdf
test ebx, ebx
je 0x409f31
mov edx, dword [esi + 0x50]
lea ecx, [eax + 2]
mov eax, dword [esi + 0x54]
mov dword [esi + 0x2c], eax
mov eax, dword [ebp - 0x14]
movzx eax, ax
mov dword [esi + 0x28], edx
cdq
add eax, dword [esi + 0x50]
mov dword [ebp - 0x14], eax
adc edx, dword [esi + 0x54]
mov dword [esi + 0x30], eax
xor eax, eax
add edi, dword [esi + 0x50]
mov dword [esi + 0x1c], ecx
adc eax, dword [esi + 0x54]
mov dword [ebp - 0x20], edx
mov dword [esi + 0x34], edx
mov dword [esi + 0x40], edi
mov dword [esi + 0x44], eax
cmp ebx, 3
jne 0x409d99
movzx ecx, byte [esi + 0x83]
movzx eax, byte [esi + 0x82]
shl cx, 8
or cx, ax
jne 0x409f31
cmp word [ebp - 0x10], cx
jne 0x409f31
movzx eax, byte [esi + 0x87]
cdq
mov ecx, eax
mov edi, edx
movzx eax, byte [esi + 0x86]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
movzx eax, byte [esi + 0x85]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
or ecx, eax
movzx eax, byte [esi + 0x84]
shld edi, ecx, 8
cdq
shl ecx, 8
or ecx, eax
mov eax, dword [ebp - 0x18]
or edi, edx
mov dword [esi + 0x38], ecx
mov dword [esi + 0x3c], edi
lea eax, [eax*4 + 8]
jmp 0x409dc9
cmp word [ebp - 0xc], 0
je 0x409f31
mov edx, dword [ebp - 8]
xor eax, eax
add edx, dword [ebp - 0x14]
mov dword [esi + 0x38], edx
adc eax, dword [ebp - 0x20]
mov dword [esi + 0x3c], eax
cmp ebx, 2
jne 0x409dbf
lea eax, [ecx + ecx]
jmp 0x409dc9
lea eax, [ecx + ecx*2]
and ecx, 1
shr eax, 1
add eax, ecx
add eax, 0x1ff
shr eax, 9
cmp dword [esi + 0x20], eax
jb 0x409f31
mov dword [esi + 0x18], 0xffffffff
mov dword [esi + 0x14], 0xffffffff
mov byte [esi + 4], 0x80
cmp ebx, 3
jne 0x409f14
movzx ecx, byte [esi + 0x89]
movzx eax, byte [esi + 0x88]
shl cx, 8
or cx, ax
cmp cx, 1
jne 0x409f14
mov eax, dword [esi + 0x50]
mov ecx, dword [esi + 0x54]
add eax, 1
adc ecx, 0
push ecx
push eax
mov ecx, esi
call fcn.00407ec0
add esp, 8
test eax, eax
jne 0x409f14
mov byte [esi + 4], al
movzx ecx, byte [esi + 0x257]
movzx eax, byte [esi + 0x256]
shl cx, 8
or cx, ax
mov eax, 0xaa55
cmp cx, ax
jne 0x409f14
movzx ecx, byte [esi + 0x5b]
movzx eax, byte [esi + 0x5a]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0x59]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0x58]
shl ecx, 8
or ecx, eax
cmp ecx, 0x41615252
jne 0x409f14
movzx ecx, byte [esi + 0x23f]
movzx eax, byte [esi + 0x23e]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0x23d]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0x23c]
shl ecx, 8
or ecx, eax
cmp ecx, 0x61417272
jne 0x409f14
movzx ecx, byte [esi + 0x243]
movzx eax, byte [esi + 0x242]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0x241]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0x240]
shl ecx, 8
or ecx, eax
mov dword [esi + 0x18], ecx
movzx ecx, byte [esi + 0x247]
movzx eax, byte [esi + 0x246]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0x245]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0x244]
shl ecx, 8
or ecx, eax
mov dword [esi + 0x14], ecx
mov ax, word [0x4489d4]
inc ax
mov byte [esi], bl
mov word [0x4489d4], ax
mov word [esi + 6], ax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, 0xd
pop ebx
mov esp, ebp
pop ebp
ret