Function at 0x5b1770
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
mov ebx, eax
sub esp, 0x5c
fld xword [esp + 0x70]
fld st(0)
fstp xword [esp + 0x28]
fxam
wait
fnstsw ax
and ax, 0x4500
cmp ax, 0x100
je 0x5b1caa
movzx edx, word [esp + 0x30]
mov esi, edx
and esi, 0x8000
jne 0x5b19f1
fxam
wait
fnstsw ax
fstp st(0)
and ax, 0x4500
cmp ax, 0x500
je 0x5b1cbf
and dx, 0x7fff
mov ecx, edx
je 0x5b1a00
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
lea ebp, [ecx - 0x3fff]
mov esi, eax
mov eax, dword [ebx + 0xc]
mov edi, edx
cmp eax, 0xe
mov dword [esp + 4], eax
ja 0x5b1c85
test edx, edx
js 0x5b17ff
mov ecx, ebp
shld edi, esi, 1
add esi, esi
test edi, edi
jns 0x5b17f3
mov ebp, ecx
mov ecx, 0xe
sub ecx, dword [esp + 4]
mov eax, 4
xor edx, edx
shrd esi, edi, 1
shr edi, 1
shl ecx, 2
shld edx, eax, cl
shl eax, cl
test cl, 0x20
je 0x5b1826
mov edx, eax
xor eax, eax
add eax, esi
adc edx, edi
test edx, edx
js 0x5b1ca2
shld edx, eax, 1
add eax, eax
mov ecx, 0xf
sub ecx, dword [esp + 4]
xor esi, esi
shl ecx, 2
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
cmovne eax, edx
cmovne edx, esi
mov edi, edx
mov esi, eax
mov eax, dword [ebx + 4]
lea edx, [esp + 0x38]
mov word [esp + 0x10], bp
mov dword [esp + 8], ebx
mov dword [esp + 0xc], edx
mov dword [esp + 4], edx
mov edx, eax
mov dword [esp + 0x18], eax
and eax, 0x20
and edx, 0x800
mov byte [esp + 0x17], al
mov dword [esp + 0x1c], edx
mov esi, esi
lea edi, [edi]
mov ecx, esi
xor edx, edx
and ecx, 0xf
mov ebp, ecx
mov eax, ecx
xor ebp, esi
or ebp, edi
je 0x5b1a70
mov eax, dword [esp + 8]
mov eax, dword [eax + 0xc]
test eax, eax
jle 0x5b18ba
mov edx, dword [esp + 8]
sub eax, 1
mov dword [edx + 0xc], eax
mov ebx, dword [esp + 4]
shrd esi, edi, 4
shr edi, 4
test ecx, ecx
jne 0x5b1a50
cmp ebx, dword [esp + 0xc]
ja 0x5b18e2
mov eax, dword [esp + 8]
mov edx, dword [eax + 0xc]
test edx, edx
js 0x5b1ad4
lea eax, [ebx + 1]
mov dword [esp + 4], eax
add ecx, 0x30
mov byte [ebx], cl
mov eax, edi
or eax, esi
jne 0x5b1890
mov edx, dword [esp + 0xc]
cmp dword [esp + 4], edx
movzx ebp, word [esp + 0x10]
mov ebx, dword [esp + 8]
je 0x5b1cdc
mov eax, dword [ebx + 8]
test eax, eax
mov dword [esp + 0x10], eax
jle 0x5b1c09
movsx edx, bp
mov eax, dword [esp + 4]
sub eax, dword [esp + 0xc]
mov esi, edx
mov edx, dword [ebx + 0xc]
mov dword [esp + 8], esi
test edx, edx
lea ecx, [eax + edx]
mov edx, dword [esp + 0x18]
cmovg eax, ecx
mov ecx, 0x66666667
and edx, 0x1c0
cmp edx, 1
sbb edx, edx
lea ebp, [eax + edx + 6]
mov eax, esi
imul ecx
mov eax, esi
sar eax, 0x1f
sar edx, 2
mov ecx, edx
sub ecx, eax
je 0x5b1cd2
mov esi, 2
mov edi, 0x66666667
nop
mov eax, ecx
sar ecx, 0x1f
add ebp, 1
imul edi
add esi, 1
sar edx, 2
sub edx, ecx
mov ecx, edx
jne 0x5b1970
movsx esi, si
mov eax, dword [esp + 0x10]
cmp eax, ebp
jle 0x5b1ae0
sub eax, ebp
test dword [esp + 0x18], 0x600
jne 0x5b1c6c
sub eax, 1
mov dword [ebx + 8], eax
nop
lea esi, [esi]
mov edx, ebx
mov eax, 0x20
call dbg.__pformat_putc
mov eax, dword [ebx + 8]
lea edx, [eax - 1]
test eax, eax
mov dword [ebx + 8], edx
jg 0x5b19b0
mov eax, dword [ebx + 4]
mov dword [esp + 0x18], eax
test byte [esp + 0x18], 0x80
je 0x5b1af2
nop
lea esi, [esi]
mov edx, ebx
mov eax, 0x2d
call dbg.__pformat_putc
jmp 0x5b1b0b
or dword [ebx + 4], 0x80
jmp 0x5b17a9
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov esi, edx
or esi, eax
je 0x5b1c23
test edx, edx
js 0x5b1ce8
mov ecx, 0xffffc001
nop
shld edx, eax, 1
mov esi, ecx
add eax, eax
sub ecx, 1
test edx, edx
jns 0x5b1a20
mov ebp, esi
mov edi, edx
mov esi, eax
mov eax, dword [ebx + 0xc]
cmp eax, 0xe
mov dword [esp + 4], eax
ja 0x5b1858
jmp 0x5b17ff
lea eax, [ebx + 1]
cmp ecx, 9
mov dword [esp + 4], eax
jbe 0x5b18e9
add ecx, 0x37
or cl, byte [esp + 0x17]
jmp 0x5b18ec
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 0xc]
cmp ebx, ebp
ja 0x5b1a90
mov ebp, dword [esp + 0x1c]
test ebp, ebp
jne 0x5b1a90
mov ebp, dword [esp + 8]
mov ebp, dword [ebp + 0xc]
test ebp, ebp
jle 0x5b1a9d
nop
mov ebp, dword [esp + 4]
mov ebx, ebp
mov byte [ebp], 0x2e
add ebx, 1
mov ebp, esi
xor ebp, 1
or ebp, edi
je 0x5b1c1a
movzx esi, word [esp + 0x10]
sub esi, 1
shrd eax, edx, 1
shr edx, 1
mov ebp, esi
mov edi, eax
lea esi, [ebp - 1]
xor edi, 1
or edi, edx
jne 0x5b1ab2
mov word [esp + 0x10], bp
xor esi, esi
xor edi, edi
jmp 0x5b18c5
mov dword [esp + 4], ebx
jmp 0x5b18ee
mov dword [ebx + 8], 0xffffffff
test byte [esp + 0x18], 0x80
jne 0x5b19e0
test dword [esp + 0x18], 0x100
jne 0x5b1c74
test byte [esp + 0x18], 0x40
jne 0x5b1c91
mov edx, ebx
mov eax, 0x30
call dbg.__pformat_putc
mov eax, dword [ebx + 4]
mov edx, ebx
and eax, 0x20
or eax, 0x58
call dbg.__pformat_putc
mov eax, dword [ebx + 8]
test eax, eax
jle 0x5b1b59
test byte [ebx + 5], 2
je 0x5b1b59
sub eax, 1
mov dword [ebx + 8], eax
lea esi, [esi]
mov edx, ebx
mov eax, 0x30
call dbg.__pformat_putc
mov eax, dword [ebx + 8]
lea edx, [eax - 1]
test eax, eax
mov dword [ebx + 8], edx
jg 0x5b1b40
mov edx, dword [esp + 0xc]
cmp dword [esp + 4], edx
jbe 0x5b1bbc
mov edi, dword [esp + 4]
mov ebp, dword [esp + 0xc]
jmp 0x5b1b94
movzx eax, word [ebx + 0x1c]
test ax, ax
mov word [esp + 0x26], ax
je 0x5b1b90
lea eax, [esp + 0x26]
mov ecx, ebx
mov edx, 1
call dbg.__pformat_wputchars
nop
cmp edi, ebp
je 0x5b1bbc
sub edi, 1
movsx eax, byte [edi]
cmp eax, 0x2e
je 0x5b1c00
cmp eax, 0x2c
je 0x5b1b70
mov edx, ebx
call dbg.__pformat_putc
jmp 0x5b1b90
mov edx, ebx
mov eax, 0x30
call dbg.__pformat_putc
mov eax, dword [ebx + 0xc]
lea edx, [eax - 1]
test eax, eax
mov dword [ebx + 0xc], edx
jg 0x5b1bb0
mov eax, dword [ebx + 4]
mov edx, ebx
and eax, 0x20
or eax, 0x50
call dbg.__pformat_putc
mov eax, dword [esp + 8]
add dword [ebx + 8], esi
mov ecx, ebx
or dword [ebx + 4], 0x1c0
cdq
call sym.___pformat_int.isra.0
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, ebx
call dbg.__pformat_emit_radix_point
jmp 0x5b1b90
movsx eax, bp
mov esi, 2
mov dword [esp + 8], eax
jmp 0x5b1ae7
xor esi, esi
xor edi, edi
jmp 0x5b18c5
mov eax, dword [ebx + 0xc]
xor esi, esi
xor edi, edi
xor ebp, ebp
cmp eax, 0xe
mov dword [esp + 4], eax
jbe 0x5b17f3
mov eax, dword [ebx + 4]
mov dword [esp + 0x18], eax
lea eax, [esp + 0x38]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 4]
test eax, eax
jle 0x5b1cf6
lea eax, [esp + 0x39]
mov byte [esp + 0x38], 0x2e
lea edx, [eax + 1]
mov byte [eax], 0x30
mov dword [esp + 4], edx
jmp 0x5b190b
mov dword [ebx + 8], eax
jmp 0x5b1ae7
mov edx, ebx
mov eax, 0x2b
call dbg.__pformat_putc
jmp 0x5b1b0b
mov eax, edi
or eax, esi
jne 0x5b1858
jmp 0x5b1c39
mov edx, ebx
mov eax, 0x20
call dbg.__pformat_putc
jmp 0x5b1b0b
add ebp, 1
jmp 0x5b1838
fstp st(0)
mov ecx, ebx
mov edx, 0x72ea5f
xor eax, eax
call dbg.__pformat_emit_inf_or_nan
jmp 0x5b1bef
mov ecx, ebx
mov edx, 0x72ea63
mov eax, esi
call dbg.__pformat_emit_inf_or_nan
jmp 0x5b1bef
mov esi, 2
jmp 0x5b1989
mov eax, dword [ebx + 0xc]
mov dword [esp + 4], eax
jmp 0x5b1c48
mov esi, eax
mov edi, edx
mov ebp, 0xffffc002
jmp 0x5b1a35
test dword [esp + 0x18], 0x800
mov eax, dword [esp + 0xc]
je 0x5b1c5d
jmp 0x5b1c54