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

Disassembly:
sub esp, 0x30
mov al, byte [0x67a3a8]
mov byte [esp + 1], al
push ebx
mov ebx, dword [esp + 0x44]
push ebp
mov edx, dword [esp + 0x40]
push esi
mov eax, dword [ebx + 0x3c7c]
add eax, 0x43c
mov ebp, dword [0x67a39c]
mov dword [esp + 0x20], eax
push edi
mov edi, dword [0x67a3b4]
dec edi
mov dword [esp + 0x18], 0x1f15
mov dword [0x67a3b4], edi
imul ecx, edi, 0xc
movzx eax, byte [ebx + edi*4]
imul eax, eax, 0xcb
mov dword [esp + 0x28], eax
mov al, byte [0x67a392]
mov byte [esp + 0x12], al
movzx eax, al
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x44]
movzx eax, byte [eax]
movzx eax, byte [edx + eax*2]
xor edx, edx
div dword [ecx + ebx]
movzx eax, word [0x67a390]
mov esi, edx
sub ebp, eax
mov edx, dword [esp + 0x24]
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], ebp
movzx eax, byte [esi + 0xb15]
cmp edx, eax
jg 0x4094e6
mov eax, dword [esp + 0x44]
movzx eax, byte [eax + edi*4]
cmp dword [0x67a3c8], eax
jne 0x4094e6
mov al, byte [esp + 0x54]
xor edx, edx
movzx ebp, al
mov edi, 0x1df
mov byte [esp + 0x54], al
mov eax, ebp
shl eax, 4
mov ecx, dword [esp + 0x58]
add ecx, eax
movzx ebx, byte [esp + 0x11]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x30], ebx
mov dword [esp + 0x2c], ebp
push 0x1c8f
mov eax, dword [eax + 0x1cc0]
div edi
xor edx, edx
or eax, ebx
and eax, ebp
div dword [ecx]
mov dword [ecx], edx
mov ecx, 0x1f15
mov eax, dword [0x67a3b4]
movzx eax, byte [esi + eax*2]
sub eax, 0xc97
cdq
idiv ecx
mov ecx, dword [0x67a384]
movzx eax, dx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x1c], eax
mov al, 0xfd
sub al, byte [edx + ecx*2]
mov byte [edx + ecx*2], al
mov eax, dword [0x67a3c8]
mov ebx, dword [0x67a384]
mov ecx, dword [0x67a3c4]
movzx ebp, byte [esi + ebp*4 + 4]
movzx eax, byte [eax + edx]
add eax, ebx
mov dword [esp + 0x40], eax
imul eax, ebx, 3
mov al, byte [eax + edx]
xor al, byte [esp + 0x58]
movzx eax, al
mov dword [esp + 0x3c], eax
movzx eax, byte [esi]
movzx eax, byte [eax + edx + 7]
mov dword [esp + 0x38], eax
mov eax, ecx
cdq
idiv dword [0x67a39c]
dec ecx
mov dword [0x67a3c4], ecx
mov edi, eax
movzx edx, byte [esi]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x30]
movzx esi, byte [edx + ecx]
mov ecx, dword [0x67a3c0]
imul esi, dword [ecx + edx*4]
mov ecx, dword [esp + 0x50]
inc byte [esp + 0x58]
movzx edx, byte [eax + ecx]
mov ecx, dword [esp + 0x20]
movzx eax, byte [ecx]
movzx ecx, byte [ecx + eax*4]
mov eax, dword [esp + 0x4c]
movzx eax, byte [ebx + eax]
mov ebx, dword [esp + 0x28]
sub ecx, eax
mov eax, ebx
inc ebx
push eax
push ecx
push edx
push dword [0x67a3ac]
mov dword [esp + 0x38], ebx
push esi
push edi
push ebp
push dword [esp + 0x50]
push dword [esp + 0x58]
push dword [esp + 0x60]
push dword [esp + 0x68]
call fcn.00401251
mov edx, dword [esp + 0x44]
mov edi, eax
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x4c]
mov dword [0x67a3b4], edi
movzx ecx, byte [edi + edx + 6]
sub ecx, dword [0x67a3cc]
mov dword [0x67a3cc], ecx
mov al, byte [eax]
movzx ecx, al
mov byte [esp + 0x43], al
mov eax, dword [esp + 0x74]
imul ecx, ecx, 3
movzx esi, byte [esp + 0x42]
add dword [esp + 0x48], 0xffff
movzx eax, byte [ecx + eax]
or eax, 0x120
mov dword [esp + 0x64], eax
movzx eax, byte [ebx]
imul ecx, eax, 3
movzx eax, byte [ecx + edx]
xor edx, edx
mov dword [esp + 0x68], eax
mov eax, dword [0x67a388]
div esi
movzx ebp, byte [ecx + ebx]
mov ecx, dword [0x67a394]
movzx edx, byte [esp + 0x84]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x74]
movzx ebx, byte [edi + eax]
mov edi, dword [ecx + edx*8]
add ebx, esi
mov ecx, dword [esp + 0x50]
mov al, byte [esp + 0x43]
inc al
mov byte [ecx], al
mov ecx, dword [esp + 0x78]
movzx eax, al
movzx esi, byte [ecx + eax*4]
mov eax, dword [esp + 0x44]
add esi, edx
mov ecx, dword [esp + 0x48]
movzx ecx, cx
movzx eax, byte [eax + 0x1fc]
push eax
push ecx
push esi
push edi
push ebx
push ebp
push ecx
push dword [esp + 0x88]
push dword [esp + 0x88]
push dword [esp + 0x88]
call fcn.00409e1b
mov ebp, dword [esp + 0x74]
add esp, 0x58
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0x58]
movzx ecx, byte [ebp]
mov byte [edx + ecx*4], al
mov eax, dword [0x67a3b4]
mov ecx, dword [esp + 0x20]
dec eax
mov dword [0x67a3b4], eax
shl eax, 4
add esi, eax
movzx eax, byte [ebp]
movzx eax, byte [eax + ecx]
movzx ecx, byte [ecx]
movzx ecx, byte [ecx + ebp]
or eax, ecx
mov ecx, dword [esp + 0x14]
movzx ecx, byte [ecx + 0x1ebe]
imul eax, ecx
cdq
idiv dword [esi]
mov ebx, dword [esp + 0x50]
mov edx, dword [esp + 0x24]
mov dword [esi], eax
mov edi, dword [0x67a3b4]
mov esi, dword [esp + 0x20]
jmp 0x4094ee
mov al, byte [esp + 0x54]
mov byte [esp + 0x54], al
mov eax, dword [esp + 0x14]
movzx ecx, byte [edi + eax]
cmp ecx, dword [0x67a3bc]
jb 0x409518
movzx eax, byte [ebp]
inc ecx
mov dword [ebx + eax*4], 0xfffffcf5
cmp ecx, dword [0x67a3bc]
jae 0x4094fe
mov edi, dword [0x67a3b4]
movzx eax, byte [edi + esi]
mov edi, dword [esp + 0x48]
inc eax
mov ecx, dword [esp + 0x18]
imul eax, edx
movzx edx, byte [esi]
sub cl, byte [edx + edi]
mov dword [esp + 0x50], eax
movzx eax, byte [edi + edx*4]
movzx ecx, cl
imul ecx, eax
mov byte [edi + edx*4], cl
dec byte [esi + 1]
movzx eax, byte [esi + 1]
imul edx, eax, 3
movzx eax, byte [esp + 0x54]
movzx eax, byte [ebx + eax*4]
movzx ecx, byte [edx + ebp + 5]
imul eax, ecx
mov byte [edx + ebp + 5], al
movzx ecx, byte [esi + 1]
mov eax, dword [0x67a3c0]
or dword [eax + ecx*4], 0x156b
mov cl, byte [esp + 0x12]
movzx eax, cl
cmp eax, dword [0x67a3c8]
jge 0x4095b3
mov al, byte [esp + 0x50]
mov edx, dword [esp + 0x44]
xor al, cl
and byte [esp + 0x28], al
mov eax, dword [0x67a3b4]
mov dword [ebx + eax*4], 0x6c3
mov eax, dword [0x67a3b4]
add eax, 2
imul ecx, eax, 3
mov dword [0x67a3b4], eax
mov al, byte [esp + 0x11]
sub al, byte [ecx + edx + 8]
mov byte [ecx + edx + 8], al
movzx ecx, byte [esp + 0x11]
imul eax, ecx, 0x19e
mov ecx, 0x1922
pop edi
cdq
idiv ecx
mov ecx, dword [0x67a384]
mov byte [ecx + esi + 1], al
mov eax, dword [esp + 0x4c]
movzx ecx, byte [0x67a392]
cdq
idiv ecx
mov ecx, dword [esp + 0x24]
movzx ecx, cl
or eax, ecx
mov ecx, 0xf68
cdq
idiv ecx
cdq
idiv dword [0x67a3c8]
mov eax, dword [esp + 0x48]
mov esi, edx
xor edx, edx
mov dword [0x67a3c8], esi
movzx eax, byte [eax + 0x1b7c]
add eax, 0xa49
div dword [0x67a3ac]
xor edx, edx
mov dword [0x67a3ac], eax
mov eax, dword [esp + 0x40]
movzx ecx, byte [eax]
mov eax, dword [0x67a380]
mov eax, dword [eax + ecx*4]
add eax, 0x9d9
mov ecx, dword [esp + 0x10]
or eax, esi
div dword [0x67a388]
dec esi
mov dword [0x67a388], eax
mov eax, dword [0x67a3b4]
mov dword [0x67a3c8], esi
pop esi
pop ebp
movzx eax, byte [ecx + eax*4]
pop ebx
add esp, 0x30
ret