Function at 0x5ab22c
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.0x5ab277.0
test byte [ebx + 0x31], 0x10
je case.0x5ab277.0
test byte [esp], 2
jne 0x5ab369
xor edx, edx
mov dl, byte [ebx + 0xe7]
cmp edx, 0x10
ja case.0x5ab277.0
mov dl, byte [edx + 0x5ab27e]
jmp dword [edx*4 + 0x5ab28f]
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.0x5ab277.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.0x5ab277.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.0x5ab277.0
mov dx, word [ebx + 0x100]
mov word [ebx + 0xfe], dx
mov word [ebx + 0xfc], dx
mov word [ebx + 0xfa], dx
jmp case.0x5ab277.0
mov eax, dword [esp]
cmp eax, 3
jne case.0x5ab277.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.0x5ab277.0
test byte [ebx + 0x31], 0x10
jne case.0x5ab277.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.0x5ab277.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 0x5ab3f7
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 0x5ab4c7
cmp word [ebx + 0xda], 0
je 0x5ab4c7
fld dword [ebx + 0x120]
fmul dword [ebx + 0x11c]
fsub dword [0x5ac020]
add esp, 0xfffffff8
fstp qword [esp]
call fcn.00556a20
add esp, 8
fcomp qword [0x5ac024]
fnstsw ax
sahf
jae 0x5ab4c7
xor edx, edx
mov dword [esp + 0xc], edx
xor edx, edx
mov eax, dword [ebx + 0x148]
jmp 0x5ab4ad
mov cl, byte [eax]
test cl, cl
je 0x5ab4ab
cmp cl, 0xff
je 0x5ab4ab
mov dword [esp + 0xc], 1
inc edx
inc eax
movzx ecx, word [ebx + 0xda]
cmp edx, ecx
jl 0x5ab498
mov eax, dword [esp + 0xc]
test eax, eax
jne 0x5ab4c7
and dword [ebx + 0x30], 0xffffdfff
test dword [ebx + 0x30], 0x602000
je 0x5abdac
mov eax, ebx
call fcn.005af8c4
test byte [ebx + 0x30], 0x80
je 0x5abd43
mov edx, dword [esp]
cmp edx, 3
jne 0x5ab9f6
mov ecx, dword [ebx + 0xd4]
mov dword [esp + 0x18], ecx
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 0x5aba4f
dec al
je 0x5aba69
dec al
je 0x5aba91
jmp 0x5abab7
fld dword [ebx + 0x120]
fstp qword [esp + 0x3c]
xor edx, edx
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], 0x3ff00000
jmp 0x5abab7
fld dword [0x5ac020]
fdiv dword [ebx + 0x11c]
fstp qword [esp + 0x3c]
fld dword [ebx + 0x11c]
fmul dword [ebx + 0x120]
fdivr dword [0x5ac020]
fstp qword [esp + 0x44]
jmp 0x5abab7
fld dword [0x5ac020]
fdiv dword [ebx + 0xf4]
fstp qword [esp + 0x3c]
fld dword [ebx + 0xf4]
fmul dword [ebx + 0x120]
fdivr dword [0x5ac020]
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.00556a64
add esp, 0x10
fmul qword [esp + 0x34]
fadd dword [0x5ac03c]
call fcn.00556b24
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.00556a64
add esp, 0x10
fmul qword [esp + 0x34]
fadd dword [0x5ac03c]
call fcn.00556b24
mov word [ebx + 0x100], ax
mov si, word [ebx + 0xfa]
cmp si, word [ebx + 0xfc]
jne 0x5abb67
cmp si, word [ebx + 0xfe]
jne 0x5abb67
cmp si, word [ebx + 0x100]
je 0x5abd06
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.00556a64
add esp, 0x10
fmul qword [esp + 0x34]
fadd dword [0x5ac03c]
call fcn.00556b24
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.00556a64
add esp, 0x10
fmul qword [esp + 0x34]
fadd dword [0x5ac03c]
call fcn.00556b24
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.00556a64
add esp, 0x10
fmul qword [esp + 0x34]
fadd dword [0x5ac03c]
call fcn.00556b24
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.00556a64
add esp, 0x10
fmul qword [esp + 0x34]
fadd dword [0x5ac03c]
call fcn.00556b24
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.00556a64
add esp, 0x10
fmul qword [esp + 0x34]
fadd dword [0x5ac03c]
call fcn.00556b24
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.00556a64
add esp, 0x10
fmul qword [esp + 0x34]
fadd dword [0x5ac03c]
call fcn.00556b24
mov word [ebx + 0xfe], ax
jmp fcn.005abf42
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 fcn.005abf42
mov edx, dword [esp]
cmp edx, 3
jne fcn.005abf42
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 fcn.005abf42
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 0x5abd6e
jmp fcn.005abf42
test byte [ebx + 0x30], 0x80
je fcn.005abf42
mov eax, dword [esp]
cmp eax, 3
jne fcn.005abf42
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 fcn.005abf42
mov ecx, dword [ebx + 0x148]
mov cl, byte [ecx + edx]
test cl, cl
jne 0x5abe2a
mov cx, word [esp + 0x54]
mov word [eax], cx
mov cl, byte [esp + 0x56]
mov byte [eax + 2], cl
jmp 0x5abf32
mov ecx, dword [ebx + 0x148]
mov cl, byte [ecx + edx]
cmp cl, 0xff
je 0x5abf32
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 0x5abe09
retf