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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
push ebx
push esi
push edi
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x144]
mov ecx, dword [ebp + 8]
xor eax, eax
mov al, byte [ecx + edx + 0x28]
mov edx, dword [ebp + 8]
mov ecx, dword [edx]
mov edi, dword [ecx + eax*8 + 4]
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x140]
mov ecx, dword [ebp + 8]
movsx eax, word [ecx + 0x14]
imul edx, eax
lea edx, [edx + edx*4]
add edi, edx
test edi, edi
je 0x40b442
xor ecx, ecx
mov dword [ebp - 4], ecx
jmp 0x40b432
imul ebx, dword [ebp - 4], 0xac
add ebx, 0x415e40
xor eax, eax
mov al, byte [ebx + 0x66]
mov edx, dword [ebp + 8]
movsx ecx, word [edx + 0x20]
cmp eax, ecx
jl 0x40ac43
mov esi, 0x41744c
mov dword [ebp - 8], 0x4173c4
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax], edx
jmp 0x40ac88
mov ecx, dword [ebp + 8]
mov esi, dword [ecx + 4]
xor eax, eax
mov al, byte [ebx + 0x66]
imul edx, eax, 0x154
add esi, edx
xor ecx, ecx
mov cl, byte [ebx]
cmp byte [esi + ecx + 0x44], 0x10
jb 0x40ac6a
mov dword [ebp - 8], 0x4173c4
jmp 0x40ac7b
xor eax, eax
mov al, byte [ebx]
xor edx, edx
mov dl, byte [esi + eax + 0x44]
mov ecx, dword [esi + edx*4 + 4]
mov dword [ebp - 8], ecx
cmp dword [ebp - 8], 0
jne 0x40ac88
mov dword [ebp - 8], 0x4173c4
mov al, byte [edi + 3]
mov byte [ebp - 9], al
xor edx, edx
mov dl, byte [edi + 4]
sar edx, 4
mov byte [ebp - 0xa], dl
mov cl, byte [edi + 4]
and cl, 0xf
mov byte [ebp - 0xb], cl
xor eax, eax
mov dword [ebx + 0x18], eax
xor edx, edx
mov dword [ebx + 0x1c], edx
mov byte [ebx + 2], 0
test byte [esi + 0x14c], 1
je 0x40ad0e
cmp byte [ebx + 0x3c], 0
jne 0x40ad0e
push 2
lea ecx, [ebx + 0x38]
push ecx
lea eax, [ebx + 0x3c]
push eax
lea edx, [ebx + 0x30]
push edx
lea ecx, [ebx + 0x34]
push ecx
mov al, byte [esi + 0x146]
push eax
mov dl, byte [esi + 0x147]
push edx
mov cl, byte [esi + 0x148]
push ecx
lea eax, [esi + 0xa4]
push eax
xor edx, edx
mov dl, byte [esi + 0x144]
push edx
mov cl, byte [esi + 0x14c]
push ecx
lea eax, [ebx + 0x28]
push eax
lea edx, [ebx + 0x2c]
push edx
push ebx
call fcn.00409abc
add esp, 0x38
test byte [esi + 0x14d], 1
je 0x40ad6c
cmp byte [ebx + 0x54], 0
jne 0x40ad6c
push 4
lea ecx, [ebx + 0x50]
push ecx
lea eax, [ebx + 0x54]
push eax
lea edx, [ebx + 0x48]
push edx
lea ecx, [ebx + 0x4c]
push ecx
mov al, byte [esi + 0x149]
push eax
mov dl, byte [esi + 0x14a]
push edx
mov cl, byte [esi + 0x14b]
push ecx
lea eax, [esi + 0xf4]
push eax
xor edx, edx
mov dl, byte [esi + 0x145]
push edx
mov cl, byte [esi + 0x14d]
push ecx
lea eax, [ebx + 0x40]
push eax
lea edx, [ebx + 0x44]
push edx
push ebx
call fcn.00409abc
add esp, 0x38
cmp byte [ebx + 0x65], 0
je 0x40ad8b
movzx ecx, word [esi + 0x152]
sub dword [ebx + 0x58], ecx
cmp dword [ebx + 0x58], 0
jge 0x40ad87
xor eax, eax
mov dword [ebx + 0x58], eax
or byte [ebx + 2], 2
xor edx, edx
mov dl, byte [edi + 2]
sar edx, 4
add edx, 0xfffffffa
cmp edx, 9
ja case.0x40ad9f.8
jmp dword [edx*4 + 0x40ada6]
xor ecx, ecx
mov cl, byte [edi + 2]
and ecx, 0xf
sub dword [ebx + 0x10], ecx
cmp dword [ebx + 0x10], 0
jge 0x40ade4
xor eax, eax
mov dword [ebx + 0x10], eax
or byte [ebx + 2], 2
jmp case.0x40ad9f.8
xor edx, edx
mov dl, byte [edi + 2]
and edx, 0xf
add dword [ebx + 0x10], edx
cmp dword [ebx + 0x10], 0x40
jle 0x40ae02
mov dword [ebx + 0x10], 0x40
or byte [ebx + 2], 2
jmp case.0x40ad9f.8
mov cl, byte [edi + 2]
and cl, 0xf
mov byte [ebx + 0x87], cl
push ebx
call fcn.00409750
pop ecx
mov al, byte [ebx + 0x86]
add byte [ebx + 0x85], al
cmp byte [ebx + 0x85], 0x1f
jle case.0x40ad9f.8
add byte [ebx + 0x85], 0xc0
jmp case.0x40ad9f.8
xor edx, edx
mov dl, byte [edi + 2]
and edx, 0xf
sub dword [ebx + 0x14], edx
or byte [ebx + 2], 4
jmp case.0x40ad9f.8
xor ecx, ecx
mov cl, byte [edi + 2]
and ecx, 0xf
add dword [ebx + 0x14], ecx
or byte [ebx + 2], 4
jmp case.0x40ad9f.8
push ebx
call fcn.004096e8
pop ecx
xor eax, eax
mov al, byte [ebp - 9]
cmp eax, 0x1d
ja case.0x40ae76.0
mov al, byte [eax + 0x40ae7d]
jmp dword [eax*4 + 0x40ae9b]
cmp byte [edi + 4], 0
jbe case.0x40ae76.0
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x134]
mov ecx, 3
cdq
idiv ecx
dec edx
je 0x40aefd
dec edx
je 0x40af52
jmp 0x40afa2
mov eax, dword [ebp + 8]
test byte [eax + 0x22], 1
je 0x40af16
xor edx, edx
mov dl, byte [ebp - 0xa]
shl edx, 6
mov dword [ebx + 0x1c], edx
jmp 0x40afa2
mov ecx, dword [ebp - 8]
movsx eax, byte [ecx + 0x11]
push eax
xor edx, edx
mov dl, byte [ebx + 0x67]
xor ecx, ecx
mov cl, byte [ebp - 0xa]
add edx, ecx
push edx
call fcn.00409d26
add esp, 8
push eax
mov eax, dword [ebp - 8]
movsx edx, byte [eax + 0x11]
push edx
xor ecx, ecx
mov cl, byte [ebx + 0x67]
push ecx
call fcn.00409d26
add esp, 8
pop edx
sub edx, eax
mov dword [ebx + 0x1c], edx
jmp 0x40afa2
mov eax, dword [ebp + 8]
test byte [eax + 0x22], 1
je 0x40af68
xor ecx, ecx
mov cl, byte [ebp - 0xb]
shl ecx, 6
mov dword [ebx + 0x1c], ecx
jmp 0x40afa2
mov eax, dword [ebp - 8]
movsx edx, byte [eax + 0x11]
push edx
xor ecx, ecx
mov cl, byte [ebx + 0x67]
xor eax, eax
mov al, byte [ebp - 0xb]
add ecx, eax
push ecx
call fcn.00409d26
add esp, 8
push eax
mov edx, dword [ebp - 8]
movsx ecx, byte [edx + 0x11]
push ecx
xor eax, eax
mov al, byte [ebx + 0x67]
push eax
call fcn.00409d26
add esp, 8
pop edx
sub edx, eax
mov dword [ebx + 0x1c], edx
or byte [ebx + 2], 1
jmp case.0x40ae76.0
xor ecx, ecx
mov dword [ebx + 0x1c], ecx
xor eax, eax
mov al, byte [ebx + 0x79]
shl eax, 2
sub dword [ebx + 0xc], eax
cmp dword [ebx + 0xc], 0x38
jge 0x40afc8
mov dword [ebx + 0xc], 0x38
or byte [ebx + 2], 1
jmp case.0x40ae76.0
xor edx, edx
mov dword [ebx + 0x1c], edx
xor ecx, ecx
mov cl, byte [ebx + 0x78]
shl ecx, 2
add dword [ebx + 0xc], ecx
or byte [ebx + 2], 1
jmp case.0x40ae76.0
xor eax, eax
mov dword [ebx + 0x1c], eax
push ebx
call fcn.004096e8
pop ecx
jmp case.0x40ae76.0
push ebx
call fcn.00409750
pop ecx
mov dl, byte [ebx + 0x86]
add byte [ebx + 0x85], dl
cmp byte [ebx + 0x85], 0x1f
jle case.0x40ae76.0
add byte [ebx + 0x85], 0xc0
jmp case.0x40ae76.0
xor ecx, ecx
mov dword [ebx + 0x1c], ecx
push ebx
call fcn.004096e8
pop ecx
xor eax, eax
mov al, byte [ebx + 0x7c]
sar eax, 4
mov byte [ebp - 0xa], al
mov dl, byte [ebx + 0x7c]
and dl, 0xf
mov byte [ebp - 0xb], dl
cmp byte [ebp - 0xa], 0
je 0x40b064
xor ecx, ecx
mov cl, byte [ebp - 0xa]
add dword [ebx + 0x10], ecx
cmp dword [ebx + 0x10], 0x40
jle 0x40b07d
mov dword [ebx + 0x10], 0x40
jmp 0x40b07d
cmp byte [ebp - 0xb], 0
je 0x40b07d
xor eax, eax
mov al, byte [ebp - 0xb]
sub dword [ebx + 0x10], eax
cmp dword [ebx + 0x10], 0
jge 0x40b07d
xor edx, edx
mov dword [ebx + 0x10], edx
or byte [ebx + 2], 2
jmp case.0x40ae76.0
push ebx
call fcn.00409750
pop ecx
mov cl, byte [ebx + 0x86]
add byte [ebx + 0x85], cl
cmp byte [ebx + 0x85], 0x1f
jle 0x40b0a9
add byte [ebx + 0x85], 0xc0
xor eax, eax
mov al, byte [ebx + 0x7c]
sar eax, 4
mov byte [ebp - 0xa], al
mov dl, byte [ebx + 0x7c]
and dl, 0xf
mov byte [ebp - 0xb], dl
cmp byte [ebp - 0xa], 0
je 0x40b0da
xor ecx, ecx
mov cl, byte [ebp - 0xa]
add dword [ebx + 0x10], ecx
cmp dword [ebx + 0x10], 0x40
jle 0x40b0f3
mov dword [ebx + 0x10], 0x40
jmp 0x40b0f3
cmp byte [ebp - 0xb], 0
je 0x40b0f3
xor eax, eax
mov al, byte [ebp - 0xb]
sub dword [ebx + 0x10], eax
cmp dword [ebx + 0x10], 0
jge 0x40b0f3
xor edx, edx
mov dword [ebx + 0x10], edx
or byte [ebx + 2], 2
jmp case.0x40ae76.0
push ebx
call fcn.00409950
pop ecx
jmp case.0x40ae76.0
xor ecx, ecx
mov cl, byte [ebx + 0x7c]
sar ecx, 4
mov byte [ebp - 0xa], cl
mov al, byte [ebx + 0x7c]
and al, 0xf
mov byte [ebp - 0xb], al
cmp byte [ebp - 0xa], 0
je 0x40b138
xor edx, edx
mov dl, byte [ebp - 0xa]
add dword [ebx + 0x10], edx
cmp dword [ebx + 0x10], 0x40
jle 0x40b151
mov dword [ebx + 0x10], 0x40
jmp 0x40b151
cmp byte [ebp - 0xb], 0
je 0x40b151
xor ecx, ecx
mov cl, byte [ebp - 0xb]
sub dword [ebx + 0x10], ecx
cmp dword [ebx + 0x10], 0
jge 0x40b151
xor eax, eax
mov dword [ebx + 0x10], eax
or byte [ebx + 2], 2
jmp case.0x40ae76.0
mov dl, byte [ebp - 0xa]
sub dl, 9
je 0x40b194
sub dl, 3
je 0x40b170
dec dl
je 0x40b1ca
jmp case.0x40ae76.0
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x134]
xor edx, edx
mov dl, byte [ebp - 0xb]
cmp eax, edx
jne case.0x40ae76.0
xor ecx, ecx
mov dword [ebx + 0x10], ecx
or byte [ebx + 2], 2
jmp case.0x40ae76.0
cmp byte [ebp - 0xb], 0
je case.0x40ae76.0
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x134]
xor edx, edx
mov dl, byte [ebp - 0xb]
mov ecx, edx
cdq
idiv ecx
test edx, edx
jne case.0x40ae76.0
or byte [ebx + 2], 8
or byte [ebx + 2], 2
or byte [ebx + 2], 1
jmp case.0x40ae76.0
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x134]
xor edx, edx
mov dl, byte [ebp - 0xb]
cmp eax, edx
jne 0x40b20e
push dword [ebp - 8]
push ebx
call fcn.0040a14c
add esp, 8
mov ecx, dword [ebx + 0x68]
mov dword [ebx + 0xc], ecx
or byte [ebx + 2], 1
cmp byte [edi + 2], 0
je 0x40b205
mov al, byte [edi + 2]
push eax
push ebx
call fcn.00409be9
add esp, 8
or byte [ebx + 2], 8
jmp case.0x40ae76.0
and byte [ebx + 2], 0xfd
and byte [ebx + 2], 0xfe
and byte [ebx + 2], 0xfb
and byte [ebx + 2], 0xf7
jmp case.0x40ae76.0
cmp byte [ebx + 0x7f], 0
je case.0x40ae76.0
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x134]
xor edx, edx
mov dl, byte [ebx + 0x7f]
mov ecx, edx
cdq
idiv ecx
test edx, edx
jne case.0x40ae76.0
cmp byte [ebx + 0x7e], 0
je 0x40b329
xor eax, eax
mov al, byte [ebx + 0x7e]
cmp eax, 0xf
ja case.0x40b260.0
jmp dword [eax*4 + 0x40b267]
dec dword [ebx + 0x10]
jmp case.0x40b260.0
sub dword [ebx + 0x10], 2
jmp case.0x40b260.0
sub dword [ebx + 0x10], 4
jmp case.0x40b260.0
sub dword [ebx + 0x10], 8
jmp case.0x40b260.0
sub dword [ebx + 0x10], 0x10
jmp case.0x40b260.0
mov eax, dword [ebx + 0x10]
add eax, eax
mov ecx, 3
cdq
idiv ecx
mov dword [ebx + 0x10], eax
jmp case.0x40b260.0
sar dword [ebx + 0x10], 1
jmp case.0x40b260.0
inc dword [ebx + 0x10]
jmp case.0x40b260.0
add dword [ebx + 0x10], 2
jmp case.0x40b260.0
add dword [ebx + 0x10], 4
jmp case.0x40b260.0
add dword [ebx + 0x10], 8
jmp case.0x40b260.0
add dword [ebx + 0x10], 0x10
jmp case.0x40b260.0
mov eax, dword [ebx + 0x10]
lea eax, [eax + eax*2]
sar eax, 1
jns 0x40b305
adc eax, 0
mov dword [ebx + 0x10], eax
jmp case.0x40b260.0
shl dword [ebx + 0x10], 1
cmp dword [ebx + 0x10], 0x40
jle 0x40b31a
mov dword [ebx + 0x10], 0x40
cmp dword [ebx + 0x10], 0
jge 0x40b325
xor edx, edx
mov dword [ebx + 0x10], edx
or byte [ebx + 2], 2
or byte [ebx + 2], 8
jmp case.0x40ae76.0
mov ecx, dword [ebp + 8]
xor eax, eax
mov al, byte [ecx + 0x130]
sar eax, 4
mov byte [ebp - 0xa], al
mov edx, dword [ebp + 8]
mov cl, byte [edx + 0x130]
and cl, 0xf
mov byte [ebp - 0xb], cl
cmp byte [ebp - 0xa], 0
je 0x40b388
xor eax, eax
mov al, byte [ebp - 0xa]
mov edx, dword [ebp + 8]
add dword [edx + 0x12c], eax
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x12c], 0x40
jle case.0x40ae76.0
mov eax, dword [ebp + 8]
mov dword [eax + 0x12c], 0x40
jmp case.0x40ae76.0
cmp byte [ebp - 0xb], 0
je case.0x40ae76.0
xor edx, edx
mov dl, byte [ebp - 0xb]
mov ecx, dword [ebp + 8]
sub dword [ecx + 0x12c], edx
mov eax, dword [ebp + 8]
cmp dword [eax + 0x12c], 0
jge case.0x40ae76.0
mov edx, dword [ebp + 8]
xor ecx, ecx
mov dword [edx + 0x12c], ecx
jmp case.0x40ae76.0
xor eax, eax
mov al, byte [ebx + 0x7d]
sar eax, 4
mov byte [ebp - 0xa], al
mov dl, byte [ebx + 0x7d]
and dl, 0xf
mov byte [ebp - 0xb], dl
cmp byte [ebp - 0xa], 0
je 0x40b3ed
xor ecx, ecx
mov cl, byte [ebp - 0xa]
add dword [ebx + 0x14], ecx
cmp dword [ebx + 0x14], 0xff
jle 0x40b406
mov dword [ebx + 0x14], 0xff
jmp 0x40b406
cmp byte [ebp - 0xb], 0
je 0x40b406
xor eax, eax
mov al, byte [ebp - 0xb]
sub dword [ebx + 0x14], eax
cmp dword [ebx + 0x14], 0
jge 0x40b406
xor edx, edx
mov dword [ebx + 0x14], edx
or byte [ebx + 2], 4
jmp case.0x40ae76.0
push ebx
call fcn.00409e2c
pop ecx
push esi
push ebx
call fcn.00409820
add esp, 8
push dword [ebp + 8]
push dword [ebp - 8]
push ebx
call fcn.00409e79
add esp, 0xc
inc dword [ebp - 4]
add edi, 5
mov ecx, dword [ebp + 8]
movsx eax, word [ecx + 0x14]
cmp eax, dword [ebp - 4]
jg 0x40ac11
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
invalid