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

Disassembly:
sub esp, 0x720
push ebx
mov ebx, dword [esp + 0x72c]
push ebp
push esi
push edi
mov edi, dword [esp + 0x734]
push 0x70b470
xor esi, esi
push str.Decoding__s_image
lea eax, [esp + 0x130]
mov word [esp + 0x130], si
call fcn.00483050
mov eax, dword [ebx]
mov edx, dword [eax + 0x20]
add esp, 8
push esi
lea ecx, [esp + 0x12c]
push ecx
mov ecx, ebx
call edx
mov ecx, dword [esp + 0x73c]
lea eax, [esp + 0x24]
push eax
push ecx
lea eax, [esp + 0x50]
call fcn.005c2ab0
mov eax, dword [esp + 0x24]
cmp eax, esi
je 0x5b3a3c
mov dword [edi], eax
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x720
ret 0xc
mov eax, dword [esp + 0x58]
cmp eax, 3
ja case.0x5b3aa6.1
cmp dword [esp + 0x68], 0x100
ja case.0x5b3aa6.1
cmp eax, 1
mov dx, word [esp + 0x56]
jne 0x5b3a74
cmp dx, 8
je 0x5b3a90
mov dword [edi], 2
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x720
ret 0xc
cmp eax, 2
jne 0x5b3a7f
cmp dx, 4
jmp 0x5b3a5d
cmp eax, 3
jne 0x5b3a90
cmp dx, 0x20
je 0x5b3a90
cmp dx, 0x10
jne case.0x5b3aa6.1
movzx ecx, dx
mov dword [esp + 0x24], ecx
add ecx, 0xffffffff
cmp ecx, 0x1f
ja case.0x5b3aa6.1
movzx ecx, byte [ecx + 0x5b4484]
jmp dword [ecx*4 + 0x5b447c]
cmp eax, 3
mov dword [esp + 0xa4], esi
mov dword [esp + 0xa8], esi
mov dword [esp + 0xac], esi
mov dword [esp + 0x80], esi
mov dword [esp + 0x84], esi
mov dword [esp + 0x88], esi
mov dword [esp + 0x8c], esi
mov dword [esp + 0x90], esi
mov dword [esp + 0x94], esi
mov dword [esp + 0x98], esi
mov dword [esp + 0x9c], esi
mov dword [esp + 0xa0], esi
jne 0x5b3bad
mov ebp, dword [esp + 0x74]
mov eax, dword [esp + 0x70]
test eax, ebp
jne case.0x5b3aa6.1
mov ebx, dword [esp + 0x78]
test eax, ebx
jne case.0x5b3aa6.1
mov esi, dword [esp + 0x7c]
test eax, esi
jne case.0x5b3aa6.1
test ebp, ebx
jne case.0x5b3aa6.1
test ebp, esi
jne case.0x5b3aa6.1
test ebx, esi
jne case.0x5b3aa6.1
cmp dx, 0x10
jne 0x5b3b7f
cmp eax, 0xffff
ja case.0x5b3aa6.1
cmp ebp, 0xffff
ja case.0x5b3aa6.1
cmp ebx, 0xffff
ja case.0x5b3aa6.1
cmp esi, 0xffff
ja case.0x5b3aa6.1
mov edi, eax
lea eax, [esp + 0xa4]
call fcn.004cd700
mov edi, ebp
lea eax, [esp + 0x80]
call fcn.004cd700
mov edi, ebx
lea eax, [esp + 0x8c]
call fcn.004cd700
mov edi, esi
jmp 0x5b3be8
cmp dx, 0x10
jne 0x5b3c01
mov edi, 0x7c00
lea eax, [esp + 0xa4]
call fcn.004cd700
mov edi, 0x3e0
lea eax, [esp + 0x80]
call fcn.004cd700
mov edi, 0x1f
lea eax, [esp + 0x8c]
call fcn.004cd700
xor edi, edi
lea eax, [esp + 0x98]
call fcn.004cd700
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x734]
xor esi, esi
mov ebx, dword [esp + 0x50]
cmp ebx, esi
mov byte [esp + 0x12], 0
jge 0x5b3c2b
neg ebx
cmp eax, 1
mov byte [esp + 0x12], 1
mov dword [esp + 0x50], ebx
je case.0x5b3aa6.1
cmp eax, 2
je case.0x5b3aa6.1
mov eax, dword [esp + 0x68]
cmp eax, esi
jbe 0x5b3c52
mov edx, dword [esp + 0x73c]
mov esi, dword [edx]
lea ecx, [eax*4]
add esi, 0x10
lea eax, [esp + 0x330]
call fcn.00499800
mov ebp, dword [esp + 0x73c]
mov edi, dword [ebp + 4]
mov esi, dword [ebp + 8]
mov eax, edi
or eax, esi
je 0x5b3c9a
mov ecx, dword [ebp]
mov eax, dword [ecx + 0x1c]
sub eax, dword [ecx + 0x10]
cdq
cmp edx, esi
ja 0x5b401e
jb 0x5b3c7d
cmp eax, edi
jae 0x5b3c88
push esi
push edi
mov eax, ecx
call fcn.0057ab50
jmp 0x5b3c9a
cmp edx, esi
jb 0x5b3c9a
ja 0x5b401e
cmp eax, edi
ja 0x5b401e
xor eax, eax
cmp word [esp + 0x56], 0x20
push ebx
mov ebx, dword [esp + 0x50]
setne al
lea ecx, [esp + 0xec]
push ecx
mov ecx, ebx
call fcn.004d3de0
mov edi, dword [ebp + 0xc]
push 0
push 0
push 0
call fcn.004d0d70
mov ecx, dword [ebp + 0xc]
mov eax, ecx
call fcn.0066ce20
test al, al
je 0x5b401e
mov al, byte [esp + 0x12]
neg al
lea esi, [esp + 0xb8]
sbb eax, eax
and eax, 0xfffffffb
add eax, 5
mov dword [esp + 0x38], eax
call fcn.004d3340
fldz
mov esi, dword [esp + 0x738]
fst qword [esp + 0x28]
mov edx, dword [esi]
fst qword [esp + 0x40]
mov eax, dword [edx + 0x24]
sub esp, 8
mov ecx, esi
fstp qword [esp]
mov dword [esp + 0x1c], 0xff000000
call eax
mov edx, dword [esi]
mov eax, dword [edx]
mov ecx, esi
call eax
test al, al
je 0x5b3d45
mov eax, dword [esp + 0x734]
mov dword [eax], 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x720
ret 0xc
mov eax, dword [esp + 0x58]
xor ecx, ecx
cmp eax, ecx
jbe 0x5b4038
cmp eax, 2
ja 0x5b4038
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], ecx
mov byte [esp + 0x12], cl
mov edi, esi
jmp 0x5b3d74
mov ebx, dword [esp + 0x4c]
cmp dword [esp + 0x18], ebx
ja 0x5b4013
cmp byte [esp + 0x12], 0
jne 0x5b415a
mov esi, dword [ebp]
add esi, 0x10
mov ecx, 2
lea eax, [esp + 0x20]
call fcn.00499800
mov al, byte [esp + 0x20]
test al, al
jne 0x5b3ef9
mov cl, byte [esp + 0x21]
movzx esi, cl
mov eax, esi
sub eax, 0
je 0x5b3edd
sub eax, 1
je 0x5b3ebf
sub eax, 1
je 0x5b401e
xor ebx, ebx
test esi, esi
mov byte [esp + 0x20], cl
jle 0x5b3e94
mov edi, dword [esp + 0x4c]
nop
cmp dword [esp + 0x58], 2
jne 0x5b3e0b
test bl, 1
jne 0x5b3e04
mov ecx, dword [ebp]
lea eax, [esp + 0x21]
call fcn.005b25e0
movzx esi, byte [esp + 0x21]
mov eax, esi
shr eax, 4
jmp 0x5b3e21
mov eax, esi
and eax, 0xf
jmp 0x5b3e21
mov ecx, dword [ebp]
lea eax, [esp + 0x13]
mov byte [esp + 0x13], 0
call fcn.005b25e0
movzx eax, byte [esp + 0x13]
cmp eax, dword [esp + 0x68]
jae 0x5b401e
mov ecx, dword [esp + 0x18]
mov edx, ecx
add ecx, 1
cmp edx, edi
mov dword [esp + 0x18], ecx
je 0x5b401e
mov ecx, dword [esp + 0xcc]
cmp ecx, dword [esp + 0xb8]
jae 0x5b401e
mov edx, dword [esp + eax*4 + 0x330]
mov dword [esp + 0x14], edx
lea edx, [esp + 0x14]
lea ecx, [esp + 0xb8]
call dword [esp + 0xe0]
lea eax, [esp + 0xb8]
call fcn.004d3300
movzx eax, byte [esp + 0x20]
add ebx, 1
cmp ebx, eax
jl 0x5b3de0
mov edi, dword [esp + 0x738]
cmp dword [esp + 0x58], 2
jne 0x5b3ea5
lea eax, [ebx + 1]
cdq
sub eax, edx
sar eax, 1
mov ebx, eax
test bl, 1
je 0x5b3f99
mov ecx, dword [ebp]
lea eax, [esp + 0x37]
call fcn.005b25e0
jmp 0x5b3f99
mov ecx, dword [esp + 0xcc]
cmp ecx, dword [esp + 0xb8]
jb 0x5b401e
mov byte [esp + 0x12], 1
jmp 0x5b3f99
cmp dword [esp + 0x18], ebx
jne 0x5b401e
add dword [esp + 0x1c], 1
mov dword [esp + 0x18], 0
jmp 0x5b3f99
movzx edi, byte [esp + 0x21]
movzx ebp, al
xor ebx, ebx
test ebp, ebp
mov esi, edi
jle 0x5b3f8b
lea ecx, [ecx]
cmp dword [esp + 0x58], 2
jne 0x5b3f26
test bl, 1
mov esi, edi
jne 0x5b3f23
shr esi, 4
jmp 0x5b3f26
and esi, 0xf
cmp esi, dword [esp + 0x68]
jae 0x5b401e
mov eax, dword [esp + 0x18]
mov edx, eax
add eax, 1
cmp edx, dword [esp + 0x4c]
mov dword [esp + 0x18], eax
je 0x5b401e
mov eax, dword [esp + 0xcc]
cmp eax, dword [esp + 0xb8]
jae 0x5b401e
mov ecx, dword [esp + esi*4 + 0x330]
mov dword [esp + 0x14], ecx
lea edx, [esp + 0x14]
lea ecx, [esp + 0xb8]
call dword [esp + 0xe0]
lea eax, [esp + 0xb8]
call fcn.004d3300
add ebx, 1
cmp ebx, ebp
jl 0x5b3f10
mov ebp, dword [esp + 0x73c]
mov edi, dword [esp + 0x738]
mov ebx, dword [esp + 0x1c]
mov edx, ebx
test edx, edx
mov dword [esp + 0x3c], edx
fild dword [esp + 0x3c]
jge 0x5b3fb1
fadd qword [0x7235b8]
mov esi, dword [esp + 0x50]
mov eax, esi
test eax, eax
mov dword [esp + 0x3c], eax
fild dword [esp + 0x3c]
jge 0x5b3fc9
fadd qword [0x7235b8]
fdivp st(1)
fst qword [esp + 0x28]
fsub qword [esp + 0x40]
fcomp qword [0x723630]
fnstsw ax
test ah, 1
jne 0x5b400b
mov edx, dword [edi]
mov eax, dword [edx]
mov ecx, edi
call eax
test al, al
jne 0x5b3d2b
mov edx, dword [edi]
fld qword [esp + 0x28]
mov eax, dword [edx + 0x24]
sub esp, 8
mov ecx, edi
fstp qword [esp]
call eax
fld qword [esp + 0x28]
fstp qword [esp + 0x40]
cmp ebx, esi
jbe 0x5b3d70
cmp byte [esp + 0x12], 0
jne 0x5b415a
mov eax, dword [esp + 0x734]
mov dword [eax], 2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x720
ret 0xc
mov ebp, dword [esp + 0x24]
fild dword [esp + 0x50]
mov eax, ebp
imul eax, dword [esp + 0x4c]
add eax, 7
shr eax, 3
lea edi, [eax + 3]
and edi, 0xfffffffc
mov ecx, edi
sub ecx, eax
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x50]
xor ebx, ebx
test ecx, ecx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
jge 0x5b4073
fadd qword [0x7235b8]
cmp dword [esp + 0x58], ebx
fld1
fdivrp st(1)
fstp qword [esp + 0xb0]
jne 0x5b4279
mov ax, word [esp + 0x56]
cmp ax, 0x20
je 0x5b409d
cmp ax, 0x18
jne 0x5b4279
mov edx, dword [esp + 0x73c]
mov ecx, dword [edx + 0xc]
call fcn.004d14f0
xor ecx, ecx
cmp byte [esp + 0x12], cl
mov esi, eax
jne 0x5b40c2
mov ecx, dword [esp + 0x50]
add ecx, 0xffffffff
imul ecx, edi
neg edi
cmp dword [esp + 0x50], ebx
mov dword [esp + 0x1c], ebx
jbe 0x5b415e
mov eax, edi
cdq
mov ebx, eax
xor ebx, edx
sub ebx, edx
lea ebp, [ecx + esi]
lea esp, [esp]
mov eax, dword [esp + 0x73c]
mov esi, dword [eax]
add esi, 0x10
mov ecx, ebx
mov eax, ebp
call fcn.00499800
fld qword [esp + 0xb0]
fadd qword [esp + 0x28]
add ebp, edi
fst qword [esp + 0x28]
fsub qword [esp + 0x40]
fcomp qword [0x723630]
fnstsw ax
test ah, 1
jne 0x5b4149
mov esi, dword [esp + 0x738]
mov edx, dword [esi]
mov eax, dword [edx]
mov ecx, esi
call eax
test al, al
jne 0x5b3d2b
mov edx, dword [esi]
fld qword [esp + 0x28]
mov eax, dword [edx + 0x24]
sub esp, 8
mov ecx, esi
fstp qword [esp]
call eax
fld qword [esp + 0x28]
fstp qword [esp + 0x40]
mov eax, dword [esp + 0x1c]
add eax, 1
cmp eax, dword [esp + 0x50]
mov dword [esp + 0x1c], eax
jb 0x5b40e0
mov ebp, dword [esp + 0x24]
mov edi, dword [esp + 0x73c]
mov edx, dword [edi + 0xc]
mov eax, dword [esp + 0x60]
test eax, eax
mov ecx, dword [esp + 0x64]
mov dword [edx + 0x14], eax
mov edx, dword [edi + 0xc]
mov dword [edx + 0x18], ecx
jbe 0x5b419e
test ecx, ecx
jbe 0x5b419e
mov esi, dword [edi + 0xc]
mov dword [esp + 0xb0], ecx
lea ecx, [esp + 0xb0]
mov dword [esp + 0xb4], eax
call fcn.004d0cb0
mov ecx, dword [edi + 0xc]
cmp dword [ecx], 0
jne 0x5b425c
mov ebx, dword [esp + 0x38]
mov eax, ebx
lea esi, [esp + 0x48]
call fcn.004d3340
mov eax, dword [esp + 0x5c]
cmp eax, dword [esp + 0x48]
jae 0x5b41ef
lea edx, [esp + 0x48]
lea ecx, [esp + 0x38]
call dword [esp + 0x68]
mov ecx, dword [eax]
shr ecx, 0x18
test cl, cl
jne 0x5b425c
lea eax, [esp + 0x48]
call fcn.004d3300
mov edx, dword [esp + 0x5c]
cmp edx, dword [esp + 0x48]
jb 0x5b41c3
mov ecx, dword [edi + 0xc]
mov eax, ebx
lea esi, [esp + 0xe8]
call fcn.004d3340
mov eax, dword [esp + 0xfc]
cmp eax, dword [esp + 0xe8]
jae 0x5b425c
mov bl, 0xff
lea edx, [esp + 0xe8]
lea ecx, [esp + 0x38]
call dword [esp + 0x108]
mov ecx, dword [eax]
mov dword [esp + 0x24], ecx
lea edx, [esp + 0x24]
lea ecx, [esp + 0xe8]
mov byte [esp + 0x27], bl
call dword [esp + 0x110]
lea eax, [esp + 0xe8]
call fcn.004d3300
mov edx, dword [esp + 0xfc]
cmp edx, dword [esp + 0xe8]
jb 0x5b4212
mov eax, dword [esp + 0x734]
mov dword [edi + 0x10], ebp
pop edi
pop esi
pop ebp
mov dword [eax], 0
pop ebx
add esp, 0x720
ret 0xc
mov ecx, dword [esp + 0xcc]
cmp ecx, dword [esp + 0xb8]
jae 0x5b415e
mov edi, dword [esp + 0x68]
cmp ebp, 0x10
je 0x5b432d
cmp ebp, 0x20
je 0x5b430d
mov eax, 8
cdq
idiv ebp
xor edx, edx
mov ecx, eax
mov eax, dword [esp + 0x1c]
div ecx
mov esi, edx
imul esi, ebp
test esi, esi
jne 0x5b42da
mov edx, dword [esp + 0x73c]
mov ecx, dword [edx]
lea eax, [esp + 0x13]
mov byte [esp + 0x13], 0
call fcn.005b25e0
movzx ebx, byte [esp + 0x13]
mov dword [esp + 0x18], ebx
mov ecx, 8
sub ecx, ebp
sub ecx, esi
mov eax, ebx
shr eax, cl
mov edx, 1
mov ecx, ebp
shl edx, cl
sub edx, 1
and eax, edx
cmp eax, edi
jae 0x5b401e
mov eax, dword [esp + eax*4 + 0x330]
mov dword [esp + 0x14], eax
jmp 0x5b43bc
mov ecx, dword [esp + 0x73c]
mov esi, dword [ecx]
add esi, 0x10
mov ecx, 4
lea eax, [esp + 0x18]
call fcn.00499800
mov ebx, dword [esp + 0x18]
jmp 0x5b4350
mov edx, dword [esp + 0x73c]
mov esi, dword [edx]
add esi, 0x10
mov ecx, 2
lea eax, [esp + 0x20]
call fcn.00499800
movzx ebx, word [esp + 0x20]
mov dword [esp + 0x18], ebx
cmp dword [esp + 0xac], 0
je 0x5b436b
push ebx
lea eax, [esp + 0xa8]
call fcn.004cd6a0
mov byte [esp + 0x16], al
cmp dword [esp + 0x88], 0
je 0x5b4386
push ebx
lea eax, [esp + 0x84]
call fcn.004cd6a0
mov byte [esp + 0x15], al
cmp dword [esp + 0x94], 0
je 0x5b43a1
push ebx
lea eax, [esp + 0x90]
call fcn.004cd6a0
mov byte [esp + 0x14], al
cmp dword [esp + 0xa0], 0
je 0x5b43bc
push ebx
lea eax, [esp + 0x9c]
call fcn.004cd6a0
mov byte [esp + 0x17], al
lea edx, [esp + 0x14]
lea ecx, [esp + 0xb8]
call dword [esp + 0xe0]
lea eax, [esp + 0xb8]
call fcn.004d3300
mov eax, dword [esp + 0x1c]
add eax, 1
cmp eax, dword [esp + 0x4c]
mov dword [esp + 0x1c], eax
jne 0x5b4461
mov eax, dword [esp + 0x3c]
cdq
push edx
push eax
mov eax, dword [esp + 0x744]
mov ecx, dword [eax]
add ecx, 0x10
call fcn.00499790
fld qword [esp + 0xb0]
mov dword [esp + 0x1c], 0
fadd qword [esp + 0x28]
fst qword [esp + 0x28]
fsub qword [esp + 0x40]
fcomp qword [0x723630]
fnstsw ax
test ah, 1
jne 0x5b4461
mov esi, dword [esp + 0x738]
mov edx, dword [esi]
mov eax, dword [edx]
mov ecx, esi
call eax
test al, al
jne 0x5b3d2b
mov edx, dword [esi]
fld qword [esp + 0x28]
mov eax, dword [edx + 0x24]
sub esp, 8
mov ecx, esi
fstp qword [esp]
call eax
fld qword [esp + 0x28]
fstp qword [esp + 0x40]
mov ecx, dword [esp + 0xcc]
cmp ecx, dword [esp + 0xb8]
jb 0x5b4291
jmp 0x5b415e