Function at 0x62ba80
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 0x62bf84
movzx edi, word [esp + 0x30]
mov esi, edi
and esi, 0x8000
jne 0x62bbf0
fxam
wait
fnstsw ax
fstp st(0)
and ax, 0x4500
cmp ax, 0x500
je 0x62bf99
and di, 0x7fff
mov ecx, edi
je 0x62bc00
mov ebp, dword [ebx + 0xc]
lea eax, [ecx - 0x3fff]
mov word [esp + 0x16], ax
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
cmp ebp, 0xe
jbe 0x62bd51
mov eax, edi
or eax, esi
je 0x62bf1b
mov eax, dword [ebx + 4]
lea ecx, [esp + 0x38]
mov dword [esp + 8], ebx
mov ebp, ecx
mov dword [esp + 0xc], ecx
movzx edx, word [esp + 0x16]
mov ecx, eax
mov dword [esp + 0x18], eax
and eax, 0x20
and ecx, 0x800
mov byte [esp + 0x10], al
mov dword [esp + 0x1c], ecx
mov ecx, ebp
jmp 0x62bb77
mov ebx, dword [esp + 8]
mov ebx, dword [ebx + 0xc]
test ebx, ebx
jle 0x62bb4a
mov ebp, dword [esp + 8]
sub ebx, 1
mov dword [ebp + 0xc], ebx
shrd esi, edi, 4
mov ebp, ecx
shr edi, 4
test eax, eax
je 0x62bbcf
lea ecx, [ebp + 1]
cmp eax, 9
jle 0x62bbe7
add eax, 0x37
or al, byte [esp + 0x10]
mov byte [ebp], al
mov eax, edi
or eax, esi
je 0x62bc50
mov eax, esi
and eax, 0xf
cmp eax, esi
jne 0x62bb35
cmp ecx, dword [esp + 0xc]
ja 0x62bba0
mov ebp, dword [esp + 0x1c]
test ebp, ebp
jne 0x62bba0
mov ebx, dword [esp + 8]
mov ebp, ecx
mov ebx, dword [ebx + 0xc]
test ebx, ebx
jle 0x62bba6
nop
lea esi, [esi]
lea ebp, [ecx + 1]
mov byte [ecx], 0x2e
cmp edi, 0
ja 0x62bbb0
cmp esi, 1
jbe 0x62bbc7
lea ecx, [edx - 1]
shrd esi, edi, 1
shr edi, 1
mov edx, ecx
lea ecx, [edx - 1]
mov ebx, esi
xor ebx, 1
or ebx, edi
jne 0x62bbb3
xor esi, esi
xor edi, edi
test eax, eax
jne 0x62bb57
cmp ebp, dword [esp + 0xc]
ja 0x62bbe4
mov ecx, dword [esp + 8]
mov ecx, dword [ecx + 0xc]
test ecx, ecx
js 0x62bdd0
lea ecx, [ebp + 1]
add eax, 0x30
jmp 0x62bb6a
or dword [ebx + 4], 0x80
jmp 0x62bab9
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov edi, edx
or edi, eax
je 0x62bf0c
test edx, edx
js 0x62bfbe
mov ecx, 0xffffc001
nop
shld edx, eax, 1
mov edi, ecx
add eax, eax
sub ecx, 1
test edx, edx
jns 0x62bc20
mov word [esp + 0x16], di
mov esi, eax
mov edi, edx
mov ebp, dword [ebx + 0xc]
cmp ebp, 0xe
jbe 0x62bd6f
jmp 0x62bb04
mov word [esp + 0x16], dx
mov ebp, ecx
mov ebx, dword [esp + 8]
cmp ecx, dword [esp + 0xc]
je 0x62bfb6
mov eax, dword [ebx + 8]
mov dword [esp + 8], eax
test eax, eax
jle 0x62bef9
mov edx, dword [ebx + 0xc]
mov eax, ebp
sub eax, dword [esp + 0xc]
movsx edi, word [esp + 0x16]
test edx, edx
lea ecx, [eax + edx]
mov edx, dword [esp + 0x18]
cmovg eax, ecx
mov ecx, 0x66666667
mov dword [esp + 0x10], edi
and edx, 0x1c0
cmp edx, 1
sbb edx, edx
lea esi, [eax + edx + 6]
mov eax, edi
imul ecx
mov eax, edi
sar eax, 0x1f
mov ecx, edx
sar ecx, 2
sub ecx, eax
je 0x62bfac
mov edi, 2
mov eax, 0x66666667
add esi, 1
add edi, 1
imul ecx
sar ecx, 0x1f
sar edx, 2
sub edx, ecx
mov ecx, edx
jne 0x62bcc1
movsx edi, di
cmp dword [esp + 8], esi
jle 0x62bde0
mov eax, dword [esp + 8]
sub eax, esi
test dword [esp + 0x18], 0x600
jne 0x62bf46
lea edx, [eax - 1]
mov dword [ebx + 8], edx
test eax, eax
jle 0x62bde7
lea esi, [esi]
mov edx, ebx
mov eax, 0x20
call fcn.0062a890
mov eax, dword [ebx + 8]
lea edx, [eax - 1]
mov dword [ebx + 8], edx
test eax, eax
jg 0x62bd10
mov eax, dword [ebx + 4]
mov dword [esp + 0x18], eax
test byte [esp + 0x18], 0x80
je 0x62bdf2
nop
lea esi, [esi]
mov edx, ebx
mov eax, 0x2d
call fcn.0062a890
jmp 0x62be0b
test edi, edi
js 0x62bd6f
mov ecx, eax
mov esi, esi
lea edi, [edi]
shld edi, esi, 1
add esi, esi
test edi, edi
jns 0x62bd60
mov word [esp + 0x16], cx
mov ecx, 0xe
mov eax, 4
xor edx, edx
sub ecx, ebp
shrd esi, edi, 1
shl ecx, 2
shr edi, 1
shld edx, eax, cl
shl eax, cl
test cl, 0x20
je 0x62bd94
mov edx, eax
xor eax, eax
add eax, esi
adc edx, edi
test edx, edx
js 0x62bf79
shld edx, eax, 1
add eax, eax
mov ecx, 0xf
xor esi, esi
sub ecx, ebp
shl ecx, 2
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
cmovne eax, edx
cmovne edx, esi
mov esi, eax
mov edi, edx
jmp 0x62bb04
mov ecx, ebp
jmp 0x62bb6d
mov dword [ebx + 8], 0xffffffff
test byte [esp + 0x18], 0x80
jne 0x62bd40
test dword [esp + 0x18], 0x100
jne 0x62bf57
test byte [esp + 0x18], 0x40
jne 0x62bf68
mov edx, ebx
mov eax, 0x30
call fcn.0062a890
mov eax, dword [ebx + 4]
mov edx, ebx
and eax, 0x20
or eax, 0x58
call fcn.0062a890
mov eax, dword [ebx + 8]
test eax, eax
jle 0x62be59
test byte [ebx + 5], 2
je 0x62be59
sub eax, 1
mov dword [ebx + 8], eax
lea esi, [esi]
mov edx, ebx
mov eax, 0x30
call fcn.0062a890
mov eax, dword [ebx + 8]
lea edx, [eax - 1]
mov dword [ebx + 8], edx
test eax, eax
jg 0x62be40
mov esi, dword [esp + 0xc]
cmp ebp, dword [esp + 0xc]
ja 0x62be87
jmp 0x62bead
movzx eax, word [ebx + 0x1c]
mov word [esp + 0x26], ax
test ax, ax
je 0x62be83
lea eax, [esp + 0x26]
mov ecx, ebx
mov edx, 1
call fcn.0062a8f0
cmp ebp, esi
je 0x62bead
sub ebp, 1
movsx eax, byte [ebp]
cmp eax, 0x2e
je 0x62bef0
cmp eax, 0x2c
je 0x62be65
mov edx, ebx
call fcn.0062a890
jmp 0x62be83
mov edx, ebx
mov eax, 0x30
call fcn.0062a890
mov eax, dword [ebx + 0xc]
lea edx, [eax - 1]
mov dword [ebx + 0xc], edx
test eax, eax
jg 0x62bea1
mov eax, dword [ebx + 4]
mov edx, ebx
and eax, 0x20
or eax, 0x50
call fcn.0062a890
mov eax, dword [esp + 0x10]
mov ecx, ebx
add dword [ebx + 8], edi
or dword [ebx + 4], 0x1c0
cdq
call fcn.0062b0c0
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, ebx
call fcn.0062abb0
jmp 0x62be83
movsx eax, word [esp + 0x16]
mov edi, 2
mov dword [esp + 0x10], eax
jmp 0x62bde7
mov ebp, dword [ebx + 0xc]
cmp ebp, 0xe
jbe 0x62bf4e
xor edx, edx
mov word [esp + 0x16], dx
mov eax, dword [ebx + 4]
mov dword [esp + 0x18], eax
lea eax, [esp + 0x38]
mov dword [esp + 0xc], eax
test ebp, ebp
jle 0x62bfd1
mov byte [esp + 0x38], 0x2e
lea eax, [esp + 0x39]
lea ebp, [eax + 1]
mov byte [eax], 0x30
jmp 0x62bc65
mov dword [ebx + 8], eax
jmp 0x62bde7
xor esi, esi
xor edi, edi
jmp 0x62bd60
mov edx, ebx
mov eax, 0x2b
call fcn.0062a890
jmp 0x62be0b
mov edx, ebx
mov eax, 0x20
call fcn.0062a890
jmp 0x62be0b
add word [esp + 0x16], 1
jmp 0x62bda6
fstp st(0)
mov ecx, ebx
mov edx, 0x6dbe9c
xor eax, eax
call fcn.0062ab10
jmp 0x62bee0
mov ecx, ebx
mov edx, 0x6dbea0
mov eax, esi
call fcn.0062ab10
jmp 0x62bee0
mov edi, 2
jmp 0x62bcdd
mov ebp, dword [ebx + 0xc]
jmp 0x62bf2a
mov esi, eax
mov eax, 0xffffc002
mov edi, edx
mov word [esp + 0x16], ax
jmp 0x62bc38
mov eax, dword [esp + 0xc]
test dword [esp + 0x18], 0x800
je 0x62bf3b
jmp 0x62bf32