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

Disassembly:
push ebx
push esi
push edi
add esp, 0xffffff58
mov ebx, eax
xor eax, eax
mov al, byte [ebx + 0xe6]
mov dword [esp], eax
test byte [ebx + 0x31], 1
je case.0x4a3493.0
test byte [ebx + 0x31], 0x10
je case.0x4a3493.0
test byte [esp], 2
jne 0x4a3585
xor edx, edx
mov dl, byte [ebx + 0xe7]
cmp edx, 0x10
ja case.0x4a3493.0
mov dl, byte [edx + 0x4a349a]
jmp dword [edx*4 + 0x4a34ab]
mov cx, word [ebx + 0x100]
mov eax, ecx
shl ecx, 8
sub ecx, eax
mov word [ebx + 0x100], cx
mov dx, word [ebx + 0x100]
mov word [ebx + 0xfe], dx
mov word [ebx + 0xfc], dx
mov word [ebx + 0xfa], dx
jmp case.0x4a3493.0
mov ax, word [ebx + 0x100]
mov ecx, eax
shl eax, 4
add eax, ecx
lea eax, [eax + eax*4]
mov word [ebx + 0x100], ax
mov ax, word [ebx + 0x100]
mov word [ebx + 0xfe], ax
mov word [ebx + 0xfc], ax
mov word [ebx + 0xfa], ax
jmp case.0x4a3493.0
mov dx, word [ebx + 0x100]
mov ecx, edx
shl edx, 4
add edx, ecx
mov word [ebx + 0x100], dx
mov ax, word [ebx + 0x100]
mov word [ebx + 0xfe], ax
mov word [ebx + 0xfc], ax
mov word [ebx + 0xfa], ax
jmp case.0x4a3493.0
mov dx, word [ebx + 0x100]
mov word [ebx + 0xfe], dx
mov word [ebx + 0xfc], dx
mov word [ebx + 0xfa], dx
jmp case.0x4a3493.0
mov eax, dword [esp]
cmp eax, 3
jne case.0x4a3493.0
xor ecx, ecx
mov cl, byte [ebx + 0xf8]
lea eax, [ecx + ecx*2]
mov edx, dword [ebx + 0xd4]
xor ecx, ecx
mov cl, byte [edx + eax]
mov word [ebx + 0xfa], cx
xor eax, eax
mov al, byte [ebx + 0xf8]
lea edx, [eax + eax*2]
mov ecx, dword [ebx + 0xd4]
xor eax, eax
mov al, byte [ecx + edx + 1]
mov word [ebx + 0xfc], ax
xor edx, edx
mov dl, byte [ebx + 0xf8]
lea ecx, [edx + edx*2]
mov eax, dword [ebx + 0xd4]
xor edx, edx
mov dl, byte [eax + ecx + 2]
mov word [ebx + 0xfe], dx
test byte [ebx + 0x32], 8
je case.0x4a3493.0
test byte [ebx + 0x31], 0x10
jne case.0x4a3493.0
movzx ecx, word [ebx + 0xda]
mov dword [esp + 8], ecx
xor eax, eax
mov dword [esp + 4], eax
mov edx, dword [esp + 4]
mov ecx, dword [esp + 8]
cmp edx, ecx
jge case.0x4a3493.0
mov eax, dword [ebx + 0x148]
mov edx, dword [esp + 4]
mov cl, 0xff
mov al, byte [eax + edx]
sub cl, al
mov edx, dword [ebx + 0x148]
mov eax, dword [esp + 4]
mov byte [edx + eax], cl
inc dword [esp + 4]
mov edx, dword [esp + 4]
mov ecx, dword [esp + 8]
cmp edx, ecx
jl 0x4a3613
mov eax, dword [ebx + 0xf8]
mov dword [ebx + 0x102], eax
mov eax, dword [ebx + 0xfc]
mov dword [ebx + 0x106], eax
mov ax, word [ebx + 0x100]
mov word [ebx + 0x10a], ax
mov edx, dword [esp]
cmp edx, 3
jne 0x4a36e3
cmp word [ebx + 0xda], 0
je 0x4a36e3
fld dword [ebx + 0x120]
fmul dword [ebx + 0x11c]
fsub dword [0x4a423c]
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00498a34
add esp, 8
fcomp qword [0x4a4240]
fnstsw ax
sahf
jae 0x4a36e3
xor edx, edx
mov dword [esp + 0xc], edx
xor edx, edx
mov eax, dword [ebx + 0x148]
jmp 0x4a36c9
mov cl, byte [eax]
test cl, cl
je 0x4a36c7
cmp cl, 0xff
je 0x4a36c7
mov dword [esp + 0xc], 1
inc edx
inc eax
movzx ecx, word [ebx + 0xda]
cmp edx, ecx
jl 0x4a36b4
mov eax, dword [esp + 0xc]
test eax, eax
jne 0x4a36e3
and dword [ebx + 0x30], 0xffffdfff
test dword [ebx + 0x30], section..idata
je 0x4a3fc8
mov eax, ebx
call fcn.004a7ae0
test byte [ebx + 0x30], 0x80
je 0x4a3f5f
mov edx, dword [esp]
cmp edx, 3
jne 0x4a3c12
mov ecx, dword [ebx + 0xd4]
mov dword [esp + 0x18], ecx
movzx eax, word [ebx + 0xd8]
mov dword [esp + 0x1c], eax
mov dl, byte [ebx + 0xf0]
cmp dl, 2
jne 0x4a37aa
movzx ecx, word [ebx + 0xfa]
mov eax, dword [ebx + 0x124]
mov dl, byte [eax + ecx]
mov byte [esp + 0x10], dl
movzx ecx, word [ebx + 0xfc]
mov eax, dword [ebx + 0x124]
mov dl, byte [eax + ecx]
mov byte [esp + 0x11], dl
movzx ecx, word [ebx + 0xfe]
mov eax, dword [ebx + 0x124]
mov dl, byte [eax + ecx]
mov byte [esp + 0x12], dl
movzx ecx, word [ebx + 0xfa]
mov eax, dword [ebx + 0x12c]
mov dl, byte [eax + ecx]
mov byte [esp + 0x13], dl
movzx ecx, word [ebx + 0xfc]
mov eax, dword [ebx + 0x12c]
mov dl, byte [eax + ecx]
mov byte [esp + 0x14], dl
movzx ecx, word [ebx + 0xfe]
mov eax, dword [ebx + 0x12c]
mov dl, byte [eax + ecx]
mov byte [esp + 0x15], dl
jmp 0x4a3a22
mov cl, byte [ebx + 0xf0]
dec cl
je 0x4a37be
dec cl
je 0x4a37d8
dec cl
je 0x4a3800
jmp 0x4a3828
fld dword [ebx + 0x120]
fstp qword [esp + 0x20]
xor eax, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 0x3ff00000
jmp 0x4a3844
fld dword [0x4a423c]
fdiv dword [ebx + 0x11c]
fstp qword [esp + 0x20]
fld dword [ebx + 0x11c]
fmul dword [ebx + 0x120]
fdivr dword [0x4a423c]
fstp qword [esp + 0x28]
jmp 0x4a3844
fld dword [0x4a423c]
fdiv dword [ebx + 0xf4]
fstp qword [esp + 0x20]
fld dword [ebx + 0xf4]
fmul dword [ebx + 0x120]
fdivr dword [0x4a423c]
fstp qword [esp + 0x28]
jmp 0x4a3844
xor edx, edx
xor ecx, ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], 0x3ff00000
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], 0x3ff00000
fld qword [esp + 0x28]
fsub dword [0x4a423c]
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00498a34
add esp, 8
fcomp qword [0x4a4240]
fnstsw ax
sahf
jae 0x4a388a
mov dl, byte [ebx + 0xfa]
mov byte [esp + 0x10], dl
mov cl, byte [ebx + 0xfc]
mov byte [esp + 0x11], cl
mov al, byte [ebx + 0xfe]
mov byte [esp + 0x12], al
jmp 0x4a3950
push dword [esp + 0x2c]
push dword [esp + 0x2c]
movzx ecx, word [ebx + 0xfa]
mov dword [esp + 0x70], ecx
fild dword [esp + 0x70]
fld xword [0x4a4248]
fmulp st(1)
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00498a78
add esp, 0x10
fmul dword [0x4a4254]
fadd dword [0x4a4258]
call fcn.00498b38
mov byte [esp + 0x10], al
push dword [esp + 0x2c]
push dword [esp + 0x2c]
movzx ecx, word [ebx + 0xfc]
mov dword [esp + 0x74], ecx
fild dword [esp + 0x74]
fld xword [0x4a4248]
fmulp st(1)
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00498a78
add esp, 0x10
fmul dword [0x4a4254]
fadd dword [0x4a4258]
call fcn.00498b38
mov byte [esp + 0x11], al
push dword [esp + 0x2c]
push dword [esp + 0x2c]
movzx ecx, word [ebx + 0xfe]
mov dword [esp + 0x78], ecx
fild dword [esp + 0x78]
fld xword [0x4a4248]
fmulp st(1)
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00498a78
add esp, 0x10
fmul dword [0x4a4254]
fadd dword [0x4a4258]
call fcn.00498b38
mov byte [esp + 0x12], al
push dword [esp + 0x24]
push dword [esp + 0x24]
movzx ecx, word [ebx + 0xfa]
mov dword [esp + 0x7c], ecx
fild dword [esp + 0x7c]
fld xword [0x4a4248]
fmulp st(1)
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00498a78
add esp, 0x10
fmul dword [0x4a4254]
fadd dword [0x4a4258]
call fcn.00498b38
mov byte [esp + 0x13], al
push dword [esp + 0x24]
push dword [esp + 0x24]
movzx ecx, word [ebx + 0xfc]
mov dword [esp + 0x80], ecx
fild dword [esp + 0x80]
fld xword [0x4a4248]
fmulp st(1)
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00498a78
add esp, 0x10
fmul dword [0x4a4254]
fadd dword [0x4a4258]
call fcn.00498b38
mov byte [esp + 0x14], al
push dword [esp + 0x24]
push dword [esp + 0x24]
movzx ecx, word [ebx + 0xfe]
mov dword [esp + 0x84], ecx
fild dword [esp + 0x84]
fld xword [0x4a4248]
fmulp st(1)
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00498a78
add esp, 0x10
fmul dword [0x4a4254]
fadd dword [0x4a4258]
call fcn.00498b38
mov byte [esp + 0x15], al
xor esi, esi
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
cmp esi, edx
jge 0x4a415e
movzx ecx, word [ebx + 0xda]
cmp esi, ecx
jge 0x4a3bcc
mov edx, dword [ebx + 0x148]
mov cl, byte [edx + esi]
cmp cl, 0xff
je 0x4a3bcc
mov edx, dword [ebx + 0x148]
mov cl, byte [edx + esi]
test cl, cl
jne 0x4a3a76
mov dx, word [esp + 0x10]
mov word [eax], dx
mov dl, byte [esp + 0x12]
mov byte [eax + 2], dl
jmp 0x4a3bfd
xor ecx, ecx
mov cl, byte [eax]
mov edx, dword [ebx + 0x12c]
mov cl, byte [edx + ecx]
mov edx, dword [ebx + 0x148]
and ecx, 0xff
movzx ecx, cx
movzx edx, byte [edx + esi]
movzx edx, dx
imul edx, ecx
mov ecx, dword [ebx + 0x148]
mov di, 0xff
movzx ecx, byte [ecx + esi]
sub di, cx
movzx ecx, di
movzx edi, byte [esp + 0x13]
movzx edi, di
imul ecx, edi
add dx, cx
add dx, 0x80
movzx ecx, dx
movzx edx, dx
sar edx, 8
add ecx, edx
sar ecx, 8
mov byte [esp + 0x30], cl
xor edx, edx
mov dl, byte [esp + 0x30]
mov ecx, dword [ebx + 0x128]
mov dl, byte [ecx + edx]
mov byte [eax], dl
xor ecx, ecx
mov cl, byte [eax + 1]
mov edx, dword [ebx + 0x12c]
mov cl, byte [edx + ecx]
mov edx, dword [ebx + 0x148]
and ecx, 0xff
movzx ecx, cx
movzx edx, byte [edx + esi]
movzx edx, dx
imul edx, ecx
mov ecx, dword [ebx + 0x148]
mov di, 0xff
movzx ecx, byte [ecx + esi]
sub di, cx
movzx ecx, di
movzx edi, byte [esp + 0x14]
movzx edi, di
imul ecx, edi
add dx, cx
add dx, 0x80
movzx ecx, dx
movzx edx, dx
sar edx, 8
add ecx, edx
sar ecx, 8
mov byte [esp + 0x30], cl
xor edx, edx
mov dl, byte [esp + 0x30]
mov ecx, dword [ebx + 0x128]
mov dl, byte [ecx + edx]
mov byte [eax + 1], dl
xor ecx, ecx
mov cl, byte [eax + 2]
mov edx, dword [ebx + 0x12c]
mov cl, byte [edx + ecx]
mov edx, dword [ebx + 0x148]
and ecx, 0xff
movzx ecx, cx
movzx edx, byte [edx + esi]
movzx edx, dx
imul edx, ecx
mov ecx, dword [ebx + 0x148]
mov di, 0xff
movzx ecx, byte [ecx + esi]
sub di, cx
movzx ecx, di
movzx edi, byte [esp + 0x15]
movzx edi, di
imul ecx, edi
add dx, cx
add dx, 0x80
movzx ecx, dx
movzx edx, dx
sar edx, 8
add ecx, edx
sar ecx, 8
mov byte [esp + 0x30], cl
xor edx, edx
mov dl, byte [esp + 0x30]
mov ecx, dword [ebx + 0x128]
mov dl, byte [ecx + edx]
mov byte [eax + 2], dl
jmp 0x4a3bfd
xor ecx, ecx
mov cl, byte [eax]
mov edx, dword [ebx + 0x124]
mov cl, byte [edx + ecx]
mov byte [eax], cl
xor edx, edx
mov dl, byte [eax + 1]
mov ecx, dword [ebx + 0x124]
mov dl, byte [ecx + edx]
mov byte [eax + 1], dl
xor ecx, ecx
mov cl, byte [eax + 2]
mov edx, dword [ebx + 0x124]
mov cl, byte [edx + ecx]
mov byte [eax + 2], cl
inc esi
add eax, 3
mov edx, dword [esp + 0x1c]
cmp esi, edx
jl 0x4a3a34
jmp 0x4a415e
mov cl, byte [ebx + 0xe7]
mov eax, 1
shl eax, cl
dec eax
xor edx, edx
mov dword [esp + 0x80], eax
xor eax, eax
mov dword [esp + 0x84], eax
xor ecx, ecx
fild qword [esp + 0x80]
fstp qword [esp + 0x34]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], 0x3ff00000
mov dword [esp + 0x44], ecx
mov dword [esp + 0x48], 0x3ff00000
mov al, byte [ebx + 0xf0]
dec al
je 0x4a3c6b
dec al
je 0x4a3c85
dec al
je 0x4a3cad
jmp 0x4a3cd3
fld dword [ebx + 0x120]
fstp qword [esp + 0x3c]
xor edx, edx
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], 0x3ff00000
jmp 0x4a3cd3
fld dword [0x4a423c]
fdiv dword [ebx + 0x11c]
fstp qword [esp + 0x3c]
fld dword [ebx + 0x11c]
fmul dword [ebx + 0x120]
fdivr dword [0x4a423c]
fstp qword [esp + 0x44]
jmp 0x4a3cd3
fld dword [0x4a423c]
fdiv dword [ebx + 0xf4]
fstp qword [esp + 0x3c]
fld dword [ebx + 0xf4]
fmul dword [ebx + 0x120]
fdivr dword [0x4a423c]
fstp qword [esp + 0x44]
push dword [esp + 0x40]
push dword [esp + 0x40]
movzx eax, word [ebx + 0x100]
mov dword [esp + 0x90], eax
fild dword [esp + 0x90]
fdiv qword [esp + 0x3c]
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00498a78
add esp, 0x10
fmul qword [esp + 0x34]
fadd dword [0x4a4258]
call fcn.00498b38
mov word [ebx + 0x10a], ax
push dword [esp + 0x48]
push dword [esp + 0x48]
movzx ecx, word [ebx + 0x100]
mov dword [esp + 0x94], ecx
fild dword [esp + 0x94]
fdiv qword [esp + 0x3c]
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00498a78
add esp, 0x10
fmul qword [esp + 0x34]
fadd dword [0x4a4258]
call fcn.00498b38
mov word [ebx + 0x100], ax
mov si, word [ebx + 0xfa]
cmp si, word [ebx + 0xfc]
jne 0x4a3d83
cmp si, word [ebx + 0xfe]
jne 0x4a3d83
cmp si, word [ebx + 0x100]
je 0x4a3f22
push dword [esp + 0x40]
push dword [esp + 0x40]
movzx edx, si
mov dword [esp + 0x98], edx
fild dword [esp + 0x98]
fdiv qword [esp + 0x3c]
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00498a78
add esp, 0x10
fmul qword [esp + 0x34]
fadd dword [0x4a4258]
call fcn.00498b38
mov word [ebx + 0x104], ax
push dword [esp + 0x40]
push dword [esp + 0x40]
movzx ecx, word [ebx + 0xfc]
mov dword [esp + 0x9c], ecx
fild dword [esp + 0x9c]
fdiv qword [esp + 0x3c]
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00498a78
add esp, 0x10
fmul qword [esp + 0x34]
fadd dword [0x4a4258]
call fcn.00498b38
mov word [ebx + 0x106], ax
push dword [esp + 0x40]
push dword [esp + 0x40]
movzx ecx, word [ebx + 0xfe]
mov dword [esp + 0xa0], ecx
fild dword [esp + 0xa0]
fdiv qword [esp + 0x3c]
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00498a78
add esp, 0x10
fmul qword [esp + 0x34]
fadd dword [0x4a4258]
call fcn.00498b38
mov word [ebx + 0x108], ax
push dword [esp + 0x48]
push dword [esp + 0x48]
movzx ecx, word [ebx + 0xfa]
mov dword [esp + 0xa4], ecx
fild dword [esp + 0xa4]
fdiv qword [esp + 0x3c]
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00498a78
add esp, 0x10
fmul qword [esp + 0x34]
fadd dword [0x4a4258]
call fcn.00498b38
mov word [ebx + 0xfa], ax
push dword [esp + 0x48]
push dword [esp + 0x48]
movzx ecx, word [ebx + 0xfc]
mov dword [esp + 0xa8], ecx
fild dword [esp + 0xa8]
fdiv qword [esp + 0x3c]
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00498a78
add esp, 0x10
fmul qword [esp + 0x34]
fadd dword [0x4a4258]
call fcn.00498b38
mov word [ebx + 0xfc], ax
push dword [esp + 0x48]
push dword [esp + 0x48]
movzx ecx, word [ebx + 0xfe]
mov dword [esp + 0xac], ecx
fild dword [esp + 0xac]
fdiv qword [esp + 0x3c]
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00498a78
add esp, 0x10
fmul qword [esp + 0x34]
fadd dword [0x4a4258]
call fcn.00498b38
mov word [ebx + 0xfe], ax
jmp 0x4a415e
mov dx, word [ebx + 0x10a]
mov word [ebx + 0x108], dx
mov word [ebx + 0x106], dx
mov word [ebx + 0x104], dx
mov ax, word [ebx + 0x100]
mov word [ebx + 0xfe], ax
mov word [ebx + 0xfc], ax
mov word [ebx + 0xfa], ax
jmp 0x4a415e
mov edx, dword [esp]
cmp edx, 3
jne 0x4a415e
mov ecx, dword [ebx + 0xd4]
mov dword [esp + 0x4c], ecx
movzx esi, word [ebx + 0xd8]
xor edx, edx
mov eax, dword [esp + 0x4c]
cmp esi, edx
jle 0x4a415e
xor ecx, ecx
mov edi, dword [ebx + 0x124]
mov cl, byte [eax]
inc edx
mov cl, byte [edi + ecx]
mov byte [eax], cl
xor ecx, ecx
mov cl, byte [eax + 1]
mov edi, dword [ebx + 0x124]
mov cl, byte [edi + ecx]
mov byte [eax + 1], cl
xor ecx, ecx
mov cl, byte [eax + 2]
mov edi, dword [ebx + 0x124]
mov cl, byte [edi + ecx]
mov byte [eax + 2], cl
add eax, 3
cmp esi, edx
jg 0x4a3f8a
jmp 0x4a415e
test byte [ebx + 0x30], 0x80
je 0x4a415e
mov eax, dword [esp]
cmp eax, 3
jne 0x4a415e
movzx edx, word [ebx + 0xda]
mov dword [esp + 0x50], edx
mov eax, dword [ebx + 0xd4]
mov dword [esp + 0x58], eax
mov dl, byte [ebx + 0xfa]
mov byte [esp + 0x54], dl
mov cl, byte [ebx + 0xfc]
mov byte [esp + 0x55], cl
mov al, byte [ebx + 0xfe]
mov byte [esp + 0x56], al
xor edx, edx
mov ecx, dword [esp + 0x58]
mov eax, ecx
mov ecx, dword [esp + 0x50]
cmp edx, ecx
jge 0x4a415e
mov ecx, dword [ebx + 0x148]
mov cl, byte [ecx + edx]
test cl, cl
jne 0x4a4046
mov cx, word [esp + 0x54]
mov word [eax], cx
mov cl, byte [esp + 0x56]
mov byte [eax + 2], cl
jmp 0x4a414e
mov ecx, dword [ebx + 0x148]
mov cl, byte [ecx + edx]
cmp cl, 0xff
je 0x4a414e
mov ecx, dword [ebx + 0x148]
mov di, 0xff
movzx esi, byte [ecx + edx]
xor ecx, ecx
movzx esi, si
mov cl, byte [eax]
movzx ecx, cx
imul esi, ecx
mov ecx, dword [ebx + 0x148]
movzx ecx, byte [ecx + edx]
sub di, cx
movzx ecx, di
movzx edi, byte [esp + 0x54]
movzx edi, di
imul ecx, edi
add si, cx
add si, 0x80
movzx ecx, si
movzx esi, si
sar esi, 8
add ecx, esi
sar ecx, 8
mov byte [eax], cl
mov ecx, dword [ebx + 0x148]
mov di, 0xff
movzx esi, byte [ecx + edx]
xor ecx, ecx
movzx esi, si
mov cl, byte [eax + 1]
movzx ecx, cx
imul esi, ecx
mov ecx, dword [ebx + 0x148]
movzx ecx, byte [ecx + edx]
sub di, cx
movzx ecx, di
movzx edi, byte [esp + 0x55]
movzx edi, di
imul ecx, edi
add si, cx
add si, 0x80
movzx ecx, si
movzx esi, si
sar esi, 8
add ecx, esi
sar ecx, 8
mov byte [eax + 1], cl
mov ecx, dword [ebx + 0x148]
movzx esi, byte [eax + 2]
movzx ecx, byte [ecx + edx]
movzx ecx, cx
movzx esi, si
imul ecx, esi
mov esi, dword [ebx + 0x148]
mov di, 0xff
movzx esi, byte [esi + edx]
sub di, si
movzx esi, di
movzx edi, byte [esp + 0x56]
movzx edi, di
imul esi, edi
add cx, si
add cx, 0x80
mov word [esp + 0x5c], cx
movzx esi, word [esp + 0x5c]
movzx ecx, word [esp + 0x5c]
sar esi, 8
add ecx, esi
sar ecx, 8
mov byte [eax + 2], cl
inc edx
add eax, 3
mov ecx, dword [esp + 0x50]
cmp edx, ecx
jl 0x4a4025
test byte [ebx + 0x30], 8
je 0x4a4232
mov eax, dword [esp]
cmp eax, 3
jne 0x4a4232
mov dx, word [ebx + 0xd8]
xor eax, eax
mov word [esp + 0x5e], dx
mov esi, 8
mov al, byte [ebx + 0x13c]
mov edx, 8
sub esi, eax
xor eax, eax
mov al, byte [ebx + 0x13d]
xor ecx, ecx
sub edx, eax
mov eax, 8
mov dword [esp + 0x60], edx
mov cl, byte [ebx + 0x13e]
sub eax, ecx
test esi, esi
mov dword [esp + 0x64], eax
jl 0x4a41be
cmp esi, 8
jle 0x4a41c0
xor esi, esi
mov eax, dword [esp + 0x60]
test eax, eax
jl 0x4a41d1
mov edx, dword [esp + 0x60]
cmp edx, 8
jle 0x4a41d7
xor ecx, ecx
mov dword [esp + 0x60], ecx
mov eax, dword [esp + 0x64]
test eax, eax
jl 0x4a41e8
mov edx, dword [esp + 0x64]
cmp edx, 8
jle 0x4a41ee
xor ecx, ecx
mov dword [esp + 0x64], ecx
xor eax, eax
cmp ax, word [esp + 0x5e]
jae 0x4a4232
movzx edx, ax
mov ecx, dword [ebx + 0xd4]
inc eax
lea edx, [edx + edx*2]
lea edi, [ecx + edx]
mov ecx, esi
shr byte [edi], cl
mov ecx, dword [ebx + 0xd4]
lea edi, [ecx + edx + 1]
mov ecx, dword [esp + 0x60]
shr byte [edi], cl
mov ecx, dword [ebx + 0xd4]
lea edx, [ecx + edx + 2]
mov ecx, dword [esp + 0x64]
shr byte [edx], cl
cmp ax, word [esp + 0x5e]
jb 0x4a41f7
add esp, 0xa8
pop edi
pop esi
pop ebx
ret