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

Disassembly:
mov eax, dword [0x41696c]
movzx eax, byte [eax + 0x40c260]
movzx ecx, word [0x40c254]
lea edx, [eax + eax*2]
mov eax, ecx
imul eax, dword [0x416968]
sub esp, 0x10
push ebp
lea ebp, [eax + eax*4]
add ebp, dword [edx*2 + 0x40c360]
je 0x404370
and dword [esp + 0xc], 0
test ecx, ecx
jle 0x404370
push ebx
push esi
push edi
mov esi, dword [esp + 0x18]
imul esi, esi, 0x88
add esi, 0x40b150
mov al, byte [esi + 0x56]
movzx dx, al
cmp dx, word [0x40c258]
mov ecx, 0x40afc8
jb 0x403df0
and dword [0x40aff8], 0
mov edi, 0x40b010
jmp 0x403e18
movzx eax, al
lea edi, [eax + eax*4]
movzx eax, byte [esi]
shl edi, 6
add edi, 0x40c960
mov al, byte [eax + edi + 0x64]
cmp al, 0x10
jae 0x403e18
movzx eax, al
mov eax, dword [edi + eax*4]
test eax, eax
mov dword [esp + 0x14], eax
jne 0x403e1c
mov dword [esp + 0x14], ecx
mov al, byte [ebp + 3]
mov byte [esp + 0x13], al
mov al, byte [ebp + 4]
and dword [esi + 0x18], 0
and dword [esi + 0x1c], 0
mov bl, al
and al, 0xf
mov byte [esp + 0x12], al
mov al, byte [edi + 0x12c]
shr bl, 4
test al, 1
mov byte [esi + 2], 0
je 0x403e97
lea ecx, [esi + 0x55]
cmp byte [ecx], 0
jne 0x403e97
push 2
lea edx, [esi + 0x30]
push edx
push ecx
lea ecx, [esi + 0x28]
push ecx
lea ecx, [esi + 0x2c]
push ecx
xor ecx, ecx
mov cl, byte [edi + 0x126]
push ecx
xor ecx, ecx
mov cl, byte [edi + 0x127]
push ecx
xor ecx, ecx
mov cl, byte [edi + 0x128]
push ecx
lea ecx, [edi + 0xc4]
push ecx
movzx ecx, byte [edi + 0x124]
push ecx
push eax
lea eax, [esi + 0x20]
push eax
lea eax, [esi + 0x24]
push eax
push esi
call fcn.004037f5
mov cl, byte [edi + 0x12d]
test cl, 1
je 0x403ef2
lea eax, [esi + 0x54]
cmp byte [eax], 0
jne 0x403ef2
push 4
lea edx, [esi + 0x44]
push edx
push eax
lea eax, [esi + 0x3c]
push eax
lea eax, [esi + 0x40]
push eax
xor eax, eax
mov al, byte [edi + 0x129]
push eax
xor eax, eax
mov al, byte [edi + 0x12a]
push eax
xor eax, eax
mov al, byte [edi + 0x12b]
push eax
lea eax, [edi + 0xf4]
push eax
movzx eax, byte [edi + 0x125]
push eax
push ecx
lea eax, [esi + 0x34]
push eax
lea eax, [esi + 0x38]
push eax
push esi
call fcn.004037f5
cmp byte [esi + 3], 0
je 0x403f0c
movzx eax, word [edi + 0x132]
sub dword [esi + 0x48], eax
jns 0x403f08
and dword [esi + 0x48], 0
or byte [esi + 2], 2
mov cl, byte [ebp + 2]
movzx eax, cl
mov edx, eax
shr edx, 4
sub edx, 6
je 0x403f7d
dec edx
je 0x403f6a
sub edx, 4
je 0x403f4a
dec edx
dec edx
je 0x403f42
dec edx
je 0x403f36
dec edx
jne 0x403f8d
push esi
call fcn.0040355c
jmp 0x403f8d
and eax, 0xf
add dword [esi + 0x14], eax
or byte [esi + 2], 4
jmp 0x403f8d
and eax, 0xf
sub dword [esi + 0x14], eax
jmp 0x403f3c
and cl, 0xf
push esi
mov byte [esi + 0x6d], cl
call fcn.00403598
mov al, byte [esi + 0x6c]
add byte [esi + 0x6b], al
mov al, byte [esi + 0x6b]
cmp al, 0x1f
jle 0x403f8d
sub al, 0x40
mov byte [esi + 0x6b], al
jmp 0x403f8d
and eax, 0xf
add dword [esi + 0x10], eax
push 0x40
pop eax
cmp dword [esi + 0x10], eax
jle 0x403f89
mov dword [esi + 0x10], eax
jmp 0x403f89
and eax, 0xf
sub dword [esi + 0x10], eax
jns 0x403f89
and dword [esi + 0x10], 0
or byte [esi + 2], 2
movzx eax, byte [esp + 0x13]
cmp eax, 7
jg 0x404132
je 0x404127
xor ecx, ecx
sub eax, ecx
je 0x404079
dec eax
je 0x40405f
dec eax
je 0x404049
dec eax
je 0x40403a
dec eax
je 0x404019
dec eax
je 0x40400d
dec eax
jne 0x404344
push esi
call fcn.00403598
mov al, byte [esi + 0x6c]
add byte [esi + 0x6b], al
mov al, byte [esi + 0x6b]
cmp al, 0x1f
jle 0x403fe1
sub al, 0x40
mov byte [esi + 0x6b], al
mov al, byte [esi + 0x6a]
mov cl, al
shr cl, 4
and al, 0xf
test cl, cl
je 0x404330
movzx eax, cl
add dword [esi + 0x10], eax
push 0x40
pop eax
cmp dword [esi + 0x10], eax
jle 0x404340
mov dword [esi + 0x10], eax
jmp 0x404340
and dword [esi + 0x1c], 0
push esi
call fcn.0040355c
jmp 0x403fe1
push esi
call fcn.00403598
mov al, byte [esi + 0x6c]
add byte [esi + 0x6b], al
mov al, byte [esi + 0x6b]
cmp al, 0x1f
jle 0x404344
sub al, 0x40
mov byte [esi + 0x6b], al
jmp 0x404344
and dword [esi + 0x1c], 0
push esi
call fcn.0040355c
jmp 0x404344
movzx eax, byte [esi + 0x61]
shl eax, 2
add dword [esi + 0xc], eax
mov dword [esi + 0x1c], ecx
or byte [esi + 2], 1
jmp 0x404344
movzx eax, byte [esi + 0x62]
shl eax, 2
sub dword [esi + 0xc], eax
push 0x38
pop eax
cmp dword [esi + 0xc], eax
mov dword [esi + 0x1c], ecx
jge 0x404056
mov dword [esi + 0xc], eax
jmp 0x404056
cmp byte [ebp + 4], 0
jbe 0x404344
mov eax, dword [0x41697c]
push 3
cdq
pop ecx
idiv ecx
dec edx
je 0x4040e2
dec edx
jne 0x404056
test byte [0x40c25a], 1
je 0x4040aa
movzx eax, byte [esp + 0x12]
shl eax, 6
mov dword [esi + 0x1c], eax
jmp 0x404056
mov ebx, dword [esp + 0x14]
movsx eax, byte [ebx + 0xd]
movzx ecx, byte [esp + 0x12]
push eax
movzx eax, byte [esi + 0x57]
add eax, ecx
push eax
call fcn.004039d8
movsx ecx, byte [ebx + 0xd]
push ecx
movzx ecx, byte [esi + 0x57]
push ecx
mov dword [esp + 0x24], eax
call fcn.004039d8
mov ecx, dword [esp + 0x1c]
sub ecx, eax
jmp 0x404053
test byte [0x40c25a], 1
je 0x4040f0
movzx eax, bl
jmp 0x4040a2
mov eax, dword [esp + 0x14]
movsx eax, byte [eax + 0xd]
push eax
movzx eax, byte [esi + 0x57]
movzx ecx, bl
add eax, ecx
push eax
call fcn.004039d8
mov ebx, eax
mov eax, dword [esp + 0x14]
movsx eax, byte [eax + 0xd]
push eax
movzx eax, byte [esi + 0x57]
push eax
call fcn.004039d8
sub ebx, eax
mov dword [esi + 0x1c], ebx
jmp 0x404056
push esi
call fcn.0040371e
jmp 0x404344
sub eax, 0xa
je 0x403fe1
sub eax, 4
je 0x4042b6
sub eax, 3
je 0x40425e
sub eax, 8
je 0x404222
dec eax
dec eax
je 0x40416d
dec eax
dec eax
jne 0x404344
push esi
call fcn.00403ab9
jmp 0x404344
mov al, byte [esi + 0x66]
test al, al
je 0x404344
movzx ecx, al
mov eax, dword [0x41697c]
cdq
idiv ecx
test edx, edx
jne 0x404344
mov al, byte [esi + 0x65]
test al, al
je 0x4042f7
movzx eax, al
dec eax
cmp eax, 0xe
ja case.0x40419f.8
jmp dword [eax*4 + 0x404375]
dec dword [esi + 0x10]
jmp case.0x40419f.8
add dword [esi + 0x10], 0xfffffffe
jmp case.0x40419f.8
add dword [esi + 0x10], 0xfffffffc
jmp case.0x40419f.8
add dword [esi + 0x10], 0xfffffff8
jmp case.0x40419f.8
add dword [esi + 0x10], 0xfffffff0
jmp case.0x40419f.8
mov eax, dword [esi + 0x10]
shl eax, 1
push 3
cdq
pop ecx
idiv ecx
jmp 0x4041fd
sar dword [esi + 0x10], 1
jmp case.0x40419f.8
inc dword [esi + 0x10]
jmp case.0x40419f.8
add dword [esi + 0x10], 2
jmp case.0x40419f.8
add dword [esi + 0x10], 4
jmp case.0x40419f.8
add dword [esi + 0x10], 8
jmp case.0x40419f.8
add dword [esi + 0x10], 0x10
jmp case.0x40419f.8
mov eax, dword [esi + 0x10]
lea eax, [eax + eax*2]
cdq
sub eax, edx
sar eax, 1
mov dword [esi + 0x10], eax
jmp case.0x40419f.8
shl dword [esi + 0x10], 1
push 0x40
lea eax, [esi + 0x10]
pop ecx
cmp dword [eax], ecx
jle 0x404211
mov dword [eax], ecx
cmp dword [eax], 0
jge 0x404219
and dword [eax], 0
or byte [esi + 2], 2
jmp 0x4042f7
mov al, byte [esi + 0x63]
mov cl, al
shr cl, 4
and al, 0xf
test cl, cl
je 0x404245
movzx eax, cl
add dword [esi + 0x14], eax
mov eax, 0xff
cmp dword [esi + 0x14], eax
jle 0x404255
mov dword [esi + 0x14], eax
jmp 0x404255
test al, al
je 0x404255
movzx eax, al
sub dword [esi + 0x14], eax
jns 0x404255
and dword [esi + 0x14], 0
or byte [esi + 2], 4
jmp 0x404344
mov al, byte [0x41698c]
mov cl, al
shr cl, 4
and al, 0xf
test cl, cl
je 0x404293
movzx eax, cl
add dword [0x416960], eax
cmp dword [0x416960], 0x40
jle 0x404344
mov dword [0x416960], 0x40
jmp 0x404344
test al, al
je 0x404344
movzx eax, al
sub dword [0x416960], eax
jns 0x404344
and dword [0x416960], 0
jmp 0x404344
movzx eax, bl
sub eax, 9
je 0x404312
sub eax, 3
je 0x404303
dec eax
jne 0x404344
movzx eax, byte [esp + 0x12]
cmp dword [0x41697c], eax
jne 0x4042fd
push dword [esp + 0x14]
push esi
call fcn.00403d05
mov eax, dword [esi + 0x78]
or byte [esi + 2], 1
mov dword [esi + 0xc], eax
xor eax, eax
mov al, byte [ebp + 2]
test al, al
je 0x4042f7
push eax
push esi
call fcn.004038e9
or byte [esi + 2], 8
jmp 0x404344
and byte [esi + 2], 0xf0
jmp 0x404344
movzx eax, byte [esp + 0x12]
cmp dword [0x41697c], eax
jne 0x404344
jmp 0x40433c
cmp byte [esp + 0x12], 0
je 0x404344
mov eax, dword [0x41697c]
movzx ecx, byte [esp + 0x12]
cdq
idiv ecx
test edx, edx
jne 0x404344
or byte [esi + 2], 0xb
jmp 0x404344
test al, al
je 0x404340
movzx eax, al
sub dword [esi + 0x10], eax
jns 0x404340
and dword [esi + 0x10], 0
or byte [esi + 2], 2
push edi
push esi
call fcn.0040362b
push dword [esp + 0x14]
push esi
call fcn.00403af1
movzx eax, word [0x40c254]
inc dword [esp + 0x18]
add ebp, 5
cmp dword [esp + 0x18], eax
jl 0x403dbd
pop edi
pop esi
pop ebx
pop ebp
add esp, 0x10
ret