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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x40f709
sub esp, 0x74
mov edx, dword [esp + 0x84]
mov ebx, dword [edx + 0x14]
mov ebp, dword [0x59e3e8]
mov ecx, dword [esp + 0x78]
sub ecx, ebp
mov ebp, ecx
shr ecx, 2
mov esi, dword [0x59e3e0]
shr ebp, 4
sub esi, ebp
lea ebp, [esi - 1]
mov esi, ecx
and ecx, 3
mov edi, dword [esp + 0x7c]
cmp edi, 8
je 0x40f613
mov eax, edi
movzx edi, byte [edx + 0xf]
xchg edi, eax
test al, 0x40
xchg edi, eax
jne 0x40f5e0
mov dword [esp + 0x3c], esi
mov dword [esp + 0x70], ebp
mov dword [esp + 0x60], ebx
mov ecx, dword [edx]
mov dword [esp + 0x38], ecx
mov edi, dword [esp + 0x80]
cmp ecx, edi
jae 0x40f5cf
mov ebp, dword [edx + 4]
shr ebp, 2
cmp ebp, 0x19
ja 0x40f5a9
mov dword [esp + 0x58], eax
xor eax, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x50], ecx
xor ecx, ecx
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x50]
jmp 0x40f2a6
lea eax, [esi + 8]
movzx edx, byte [ebx]
mov ecx, esi
shl edx, cl
cmp ecx, 0x20
sbb ecx, ecx
and ecx, edx
mov edx, dword [esp + 0x20]
or edx, ecx
inc ebx
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x84]
mov esi, dword [esp + 0x28]
cmp esi, ebp
jb 0x40f273
mov ebx, ecx
shr ecx, 2
lea ebp, [ecx + ecx]
cmp ebp, 0x19
ja 0x40f59e
mov ebp, dword [esp + 0x20]
mov esi, ecx
jmp 0x40f2e0
mov dword [esp + 0x20], ebp
shl ebp, cl
cmp ecx, 0x20
sbb eax, eax
and ebp, eax
mov eax, dword [esp + 0x20]
or ebp, eax
add ecx, ecx
mov eax, dword [esp + 0x7c]
cmp ecx, 0x20
jbe 0x40f2c7
xchg esi, eax
test al, al
xchg esi, eax
je 0x40f702
mov ecx, edx
mov edx, 0x19
movzx edx, dl
xchg esi, eax
movzx ebx, al
xchg esi, eax
mov eax, edx
xor edx, edx
div bx
movzx edx, al
imul edx, esi
mov eax, ecx
mov ecx, edx
mov ebx, 1
shl ebx, cl
cmp ecx, 0x20
sbb esi, esi
and ebx, esi
dec ebx
and ebp, ebx
xor edx, edx
xor ebx, ebx
mov esi, ecx
test edx, edx
je 0x40f593
mov ecx, ebp
movzx ebp, byte [edx]
inc edx
mov dword [esp + 0x48], eax
mov eax, 8
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x38]
cmp edi, esi
jne 0x40f562
mov esi, dword [eax + 4]
shr esi, 2
test esi, esi
je 0x40f692
cmp esi, 2
jae 0x40f55b
mov eax, 2
mov esi, dword [esp + 0x3c]
test esi, 3
jne 0x40f67a
mov esi, ebp
and ebp, 0xf
or ebp, 0xd0
cmp eax, 4
ja 0x40f402
mov ecx, 4
mov edx, dword [esp + 0x70]
cmp ecx, eax
jbe 0x40f3fe
mov ebx, ecx
sub ecx, eax
add ecx, 0xfffffffc
neg ecx
mov eax, 1
shl eax, cl
cmp ecx, 0x20
sbb esi, esi
and esi, eax
lea eax, [esi - 1]
mov esi, eax
shl eax, 4
or eax, esi
and ebp, eax
mov eax, dword [esp + 0x7c]
shr eax, 2
cmp ebx, eax
ja 0x40f3f8
xchg ebp, eax
mov byte [edx], al
xchg ebp, eax
lea ecx, [ebx + 4]
dec edx
jmp 0x40f3dd
mov byte [edx], 0
add ecx, 4
dec edx
cmp ecx, eax
jbe 0x40f3d6
xor ebx, ebx
add eax, 2
cmp eax, ecx
jne 0x40f3f4
movzx eax, byte [edx]
and eax, 0xffffffcc
or ebx, eax
mov byte [edx], bl
add esp, 0x74
ret
mov ecx, ebx
mov ebx, ebp
jmp 0x40f3e3
mov ebx, ecx
jmp 0x40f3c1
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x68], ebx
mov edi, dword [esp + 0x70]
xchg ebp, eax
mov byte [edi], al
xchg ebp, eax
shr esi, 4
mov ebp, dword [esp + 0x24]
add ebp, 0xfffffff8
dec edi
mov dword [esp + 0x40], eax
mov eax, 4
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x40]
jmp 0x40f450
mov edi, dword [esp + 0x70]
xchg ebp, eax
mov byte [edi], al
xchg ebp, eax
shr ebx, 4
dec edi
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x1c], esi
mov ebp, ecx
mov ecx, dword [esp + 0x3c]
mov esi, ebx
mov ebx, dword [esp + 0x68]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], esi
and esi, 0xf
or esi, 0xf0
mov ebp, dword [esp + 0x1c]
add ebp, 4
cmp ebp, eax
jae 0x40f54e
xchg esi, eax
mov byte [edi], al
xchg esi, eax
mov ebp, dword [esp + 0x30]
shr ebp, 4
lea esi, [edi - 1]
mov dword [esp + 0x70], esi
cmp edx, ebx
je 0x40f4ce
mov edi, dword [esp + 0x24]
cmp edi, 8
jae 0x40f4c7
movzx ebx, byte [edx]
mov ecx, edi
shl ebx, cl
cmp ecx, 0x20
sbb esi, esi
and ebx, esi
or ebp, ebx
inc edx
mov ebx, ebp
and ebp, 0xf
or ebp, 0xf0
mov esi, dword [esp + 0x1c]
add esi, 8
cmp esi, eax
jb 0x40f430
mov ecx, dword [esp + 0x70]
mov edx, ecx
mov ecx, esi
jmp 0x40f39a
add edi, 0xfffffff8
mov ecx, edi
jmp 0x40f4a0
test edx, edx
je 0x40f515
movzx edx, byte [edx]
mov ecx, dword [esp + 0x24]
shl edx, cl
cmp ecx, 0x20
sbb edi, edi
and edx, edi
or ebp, edx
mov edx, dword [esp + 0x2c]
lea edi, [ecx + edx]
cmp edi, 8
jae 0x40f509
mov edx, dword [esp + 0x60]
movzx ebx, byte [edx]
mov ecx, edi
shl ebx, cl
cmp ecx, 0x20
sbb esi, esi
and esi, ebx
or ebp, esi
mov ebx, edx
inc edx
jmp 0x40f4a0
lea ecx, [ecx + edx - 8]
mov ebx, dword [esp + 0x60]
mov edx, ebx
jmp 0x40f4a0
mov edi, dword [esp + 0x24]
cmp edi, 8
jae 0x40f544
mov ecx, edi
mov ebx, dword [esp + 0x3c]
shl ebx, cl
cmp ecx, 0x20
sbb esi, esi
and ebx, esi
or ebx, ebp
mov ebp, dword [esp + 0x2c]
lea esi, [ecx + ebp]
lea ecx, [esi - 8]
mov ebp, ebx
mov ebx, dword [esp + 0x60]
jmp 0x40f4a0
mov esi, edi
mov ebx, ebp
mov ebp, dword [esp + 0x2c]
jmp 0x40f536
mov ecx, edi
mov edx, esi
mov esi, ebp
mov ebp, edx
jmp 0x40f4be
mov eax, esi
jmp 0x40f371
test esi, esi
je 0x40f6fb
mov dword [esp + 0x64], edx
mov eax, edi
xor edx, edx
div esi
lea edx, [eax - 1]
imul edx, esi
mov eax, dword [esp + 0x84]
mov edi, dword [eax + 4]
lea esi, [edx + edi]
shr esi, 2
mov edx, dword [esp + 0x64]
jmp 0x40f35b
mov dword [esp + 0x24], ecx
mov ecx, ebp
jmp 0x40f345
mov eax, edx
mov ebp, dword [esp + 0x20]
jmp 0x40f320
add ebp, 7
shr ebp, 3
lea eax, [ebp - 1]
shr ecx, 2
shl eax, 3
sub ecx, eax
lea ebx, [ebp + ebx - 1]
mov eax, edx
mov edx, dword [esp + 0x60]
xor ebp, ebp
mov esi, ecx
xor ecx, ecx
jmp 0x40f326
mov eax, edx
mov edx, ebx
xor ecx, ecx
xor ebx, ebx
mov ebp, ecx
mov esi, ebp
jmp 0x40f326
mov esi, dword [edx + 4]
mov edx, dword [edx]
add ebx, 4
mov dword [esp + 0xc], edx
mov dword [esp], ebp
mov dword [esp + 4], ecx
mov dword [esp + 8], esi
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ebx
call fcn.0040f720
add esp, 0x74
ret
mov eax, dword [edx]
cmp eax, 4
jne 0x40f657
mov eax, dword [esp + 0x80]
cmp eax, 4
jne 0x40f645
movzx eax, byte [ebp]
mov edx, 0x33
shl edx, cl
not edx
and edx, eax
mov eax, 0x11
shl eax, cl
or edx, eax
mov byte [ebp], dl
add esp, 0x74
ret
movzx eax, byte [ebp]
mov edx, 0x13
shl edx, cl
or edx, eax
mov byte [ebp], dl
jmp 0x40f641
movzx eax, byte [ebx]
and eax, 3
or eax, 0x10
movzx edx, byte [ebp]
mov ebx, 0x33
shl ebx, cl
not ebx
and ebx, edx
shl eax, cl
or eax, ebx
mov byte [ebp], al
add esp, 0x74
ret
lea eax, [0x50bedb]
mov dword [esp], eax
mov dword [esp + 4], 0x21
call fcn.00426190
ud2
mov dword [esp], eax
call fcn.00443b30
mov eax, dword [esp + 8]
mov dword [esp + 0x34], eax
mov ecx, dword [esp + 4]
mov dword [esp + 0x6c], ecx
call fcn.00426950
lea eax, [0x5098ef]
mov dword [esp], eax
mov dword [esp + 4], 0x17
call fcn.004271e0
mov eax, dword [esp + 0x6c]
mov dword [esp], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 4], eax
call fcn.004271e0
call fcn.00426b70
call fcn.004269c0
lea eax, [0x50d986]
mov dword [esp], eax
mov dword [esp + 4], 0x2d
call fcn.00426190
ud2
call fcn.00424cf0
ud2
call fcn.00424cf0
ud2
call fcn.004491a0
jmp fcn.0040f1c0