Function at 0x455ad6
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffffc8
mov word [esp], ax
xor ebx, ebx
movsx eax, word [esp]
mov edx, dword [0x48d524]
mov eax, dword [edx + eax*4 - 4]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
fild qword [eax + 0x494]
mov eax, dword [esp + 0x24]
fild qword [eax + 0x48c]
fsubp st(1)
call fcn.004028a0
add eax, 1
adc edx, 0
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
fild qword [esp + 0x2c]
fistp qword [esp + 8]
wait
mov eax, dword [esp + 0x24]
fild qword [eax + 0x494]
fcomp dword [0x455ef4]
fnstsw ax
sahf
jne 0x455858
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x18]
mov dword [esp + 8], edx
mov edx, dword [eax + 0x1c]
mov dword [esp + 0xc], edx
mov eax, dword [0x48d550]
cmp byte [eax + 0x18af], 0
jne 0x45590a
mov eax, dword [0x48d550]
cmp byte [eax + 0x18a2], 3
je 0x455886
mov eax, dword [0x48d550]
cmp byte [eax + 0x18a2], 4
jne 0x4558c1
push dword [esp + 0xc]
push dword [esp + 0xc]
push 0
push 2
call fcn.0040fe38
test eax, eax
je 0x4558c1
push 0
push 2
mov ax, 0xc7
call fcn.0040bc04
call fcn.0040f4d4
mov eax, dword [0x48da44]
mov edx, 3
call fcn.00411d74
jmp 0x455ee9
mov eax, dword [0x48d550]
cmp byte [eax + 0x18a2], 4
jbe 0x45590a
push dword [esp + 0xc]
push dword [esp + 0xc]
push 0
push 4
call fcn.0040fe38
test eax, eax
je 0x45590a
push 0
push 4
mov ax, 0xc7
call fcn.0040bc04
call fcn.0040f4d4
mov eax, dword [0x48da44]
mov edx, 3
call fcn.00411d74
jmp 0x455ee9
mov eax, dword [0x48d550]
cmp byte [eax + 0x18af], 2
jne 0x455945
push dword [esp + 0xc]
push dword [esp + 0xc]
push 0
push 2
call fcn.0040fe38
test eax, eax
je 0x455945
mov ax, 0xc8
call fcn.0040bc04
mov edx, 3
call fcn.00411d74
jmp 0x455ee9
mov eax, dword [0x48d550]
cmp byte [eax + 0x18af], 3
jne 0x45598e
push dword [esp + 0xc]
push dword [esp + 0xc]
push 0
push 4
call fcn.0040fe38
test eax, eax
je 0x45598e
push 0
push 4
mov ax, 0xc7
call fcn.0040bc04
call fcn.0040f4d4
mov eax, dword [0x48da44]
mov edx, 3
call fcn.00411d74
jmp 0x455ee9
mov eax, dword [0x48d550]
mov al, byte [eax + 0x18af]
cmp al, 2
jb 0x4559c9
mov edx, dword [0x48d550]
cmp al, 3
ja 0x4559c9
push 0
push 0
mov eax, dword [esp + 0x2c]
mov ax, word [eax + 0x534]
xor ecx, ecx
mov dl, 0xb
call fcn.0044f244
test al, al
je 0x455ee9
jmp 0x4559e9
push 0
push 0
mov eax, dword [esp + 0x2c]
mov ax, word [eax + 0x534]
xor ecx, ecx
mov dl, 8
call fcn.0044f244
test al, al
je 0x455ee9
mov eax, dword [esp + 0x24]
add eax, 0xc
call fcn.00428760
test al, al
je 0x455ee9
mov ebx, dword [0x48d550]
mov bl, byte [ebx + 0x18af]
cmp bl, 4
jae 0x455a38
mov eax, dword [0x48d550]
xor edx, edx
mov dl, bl
mov eax, 2
call fcn.0040bb7c
add ax, 0xeb
call fcn.0040bc04
mov edx, eax
mov eax, dword [0x48d948]
call fcn.00405c48
jmp 0x455a4d
mov ax, 0xeb
call fcn.0040bc04
mov edx, eax
mov eax, dword [0x48d948]
call fcn.00405c48
mov eax, dword [0x48d948]
xor edx, edx
call fcn.0040e810
fild qword [esp + 8]
fsub dword [0x455ef8]
fdiv dword [0x455efc]
call fcn.004028ac
inc eax
mov word [esp + 0x1a], ax
mov eax, 0xe000
call fcn.004024e8
mov esi, eax
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x48c]
mov dword [esp + 0x10], edx
mov edx, dword [eax + 0x490]
mov dword [esp + 0x14], edx
xor eax, eax
mov dword [0x49bbf8], eax
mov ax, word [esp + 0x1a]
test ax, ax
jbe 0x455e13
mov word [esp + 0x28], ax
mov word [esp + 0x18], 1
mov ax, word [esp + 0x18]
cmp ax, word [esp + 0x1a]
jne 0x455aea
fild qword [esp + 8]
fsub dword [0x455ef8]
add esp, 0xfffffff8
fistp qword [esp]
wait
push 0
push 0xe000
call fcn.0040fe38
inc eax
mov word [esp + 0x1c], ax
jmp 0x455af1
mov word [esp + 0x1c], 0xe000
movzx ebx, word [esp + 0x1c]
push ebx
lea edx, [esp + 0x14]
mov eax, dword [esp + 0x28]
add eax, 0xc
mov ecx, esi
call fcn.004254a8
mov ebp, eax
cmp ebx, ebp
jne 0x455e13
mov eax, dword [0x48d550]
cmp byte [eax + 0x18af], 0
jne 0x455b2a
mov edx, ebp
mov eax, esi
call fcn.00455f04
mov eax, dword [0x48d550]
cmp byte [eax + 0x18af], 1
jne 0x455b50
mov edi, ebp
test di, di
jbe 0x455b50
mov bx, 1
movzx eax, bx
not byte [esi + eax - 1]
inc ebx
dec di
jne 0x455b43
mov eax, dword [0x48d550]
cmp byte [eax + 0x18af], 4
jne 0x455b81
mov edi, ebp
test di, di
jbe 0x455b81
mov bx, 1
mov eax, dword [0x48d550]
mov al, byte [eax + 0x18aa]
movzx edx, bx
xor byte [esi + edx - 1], al
inc ebx
dec di
jne 0x455b69
mov eax, dword [0x48d550]
cmp byte [eax + 0x18af], 7
jne 0x455bb2
mov edi, ebp
test di, di
jbe 0x455bb2
mov bx, 1
mov eax, dword [0x48d550]
mov al, byte [eax + 0x182c]
movzx edx, bx
or byte [esi + edx - 1], al
inc ebx
dec di
jne 0x455b9a
mov eax, dword [0x48d550]
cmp byte [eax + 0x18af], 8
jne 0x455be3
mov edi, ebp
test di, di
jbe 0x455be3
mov bx, 1
mov eax, dword [0x48d550]
mov al, byte [eax + 0x182d]
movzx edx, bx
and byte [esi + edx - 1], al
inc ebx
dec di
jne 0x455bcb
mov eax, dword [0x48d550]
cmp byte [eax + 0x18af], 5
jne 0x455c66
mov edi, ebp
test di, di
jbe 0x455c66
mov bx, 1
movzx eax, bx
shl byte [esi + eax - 1], 1
movzx eax, bx
cmp ebp, eax
jle 0x455c16
movzx eax, bx
mov al, byte [esi + eax]
mov byte [esp + 0x1e], al
jmp 0x455c4e
mov ax, word [esp + 0x18]
cmp ax, word [esp + 0x1a]
jne 0x455c29
mov byte [esp + 0x1e], 0
jmp 0x455c4e
push 1
lea ecx, [esp + 0x22]
lea edx, [esp + 0x14]
mov eax, dword [esp + 0x28]
add eax, 0xc
call fcn.004254a8
fild qword [esp + 0x10]
fsub dword [0x455ef8]
fistp qword [esp + 0x10]
wait
mov al, byte [esp + 0x1e]
and al, 0x80
cmp al, 0x80
jne 0x455c60
movzx eax, bx
or byte [esi + eax - 1], 1
inc ebx
dec di
jne 0x455bfc
mov eax, dword [0x48d550]
cmp byte [eax + 0x18af], 6
jne 0x455cd8
mov dl, byte [esi + ebp - 1]
mov ebx, ebp
cmp bx, 1
jb 0x455cd4
movzx eax, bx
xor ecx, ecx
mov cl, byte [esi + eax - 1]
shr ecx, 1
mov byte [esi + eax - 1], cl
cmp bx, 1
jbe 0x455c9f
mov cl, byte [esi + eax - 2]
mov byte [esp + 0x1e], cl
jmp 0x455cb6
cmp word [esp + 0x18], 1
jne 0x455cae
mov byte [esp + 0x1e], 0
jmp 0x455cb6
mov cl, byte [esp + 0x21]
mov byte [esp + 0x1e], cl
mov cl, byte [esp + 0x1e]
and cl, 1
cmp cl, 1
jne 0x455cc9
or byte [esi + eax - 1], 0x80
jmp 0x455cce
and byte [esi + eax - 1], 0x7f
dec ebx
test bx, bx
jne 0x455c80
mov byte [esp + 0x21], dl
mov eax, dword [0x48d550]
cmp byte [eax + 0x18af], 2
jne 0x455d20
mov edi, ebp
test di, di
jbe 0x455d20
mov ax, 1
movzx edx, ax
mov ecx, edx
and ecx, 1
cmp ecx, 1
jne 0x455d1a
movzx ecx, ax
mov cl, byte [esi + ecx - 1]
mov byte [esp + 0x1e], cl
mov cl, byte [esi + edx]
movzx ebx, ax
mov byte [esi + ebx - 1], cl
mov cl, byte [esp + 0x1e]
mov byte [esi + edx], cl
inc eax
dec di
jne 0x455cf1
mov eax, dword [0x48d550]
cmp byte [eax + 0x18af], 3
jne 0x455d80
mov edi, ebp
test di, di
jbe 0x455d80
mov ax, 1
movzx edx, ax
mov ecx, edx
and ecx, 3
cmp ecx, 1
jne 0x455d7a
movzx ecx, ax
mov cl, byte [esi + ecx - 1]
mov byte [esp + 0x1f], cl
mov cl, byte [esi + edx]
mov byte [esp + 0x20], cl
mov cl, byte [esi + edx + 2]
movzx ebx, ax
mov byte [esi + ebx - 1], cl
mov cl, byte [esi + edx + 1]
mov byte [esi + edx], cl
mov cl, byte [esp + 0x20]
mov byte [esi + edx + 1], cl
mov cl, byte [esp + 0x1f]
mov byte [esi + edx + 2], cl
inc eax
dec di
jne 0x455d39
mov dword [esp + 0x34], ebp
fild dword [esp + 0x34]
fild qword [esp + 0x10]
fsubrp st(1)
fistp qword [esp + 0x10]
wait
push ebp
lea edx, [esp + 0x14]
mov eax, dword [esp + 0x28]
add eax, 0xc
mov ecx, esi
call fcn.00426720
cmp ebp, eax
jne 0x455e13
movzx eax, word [esp + 0x18]
dec eax
imul eax, eax, 0xe000
movzx edx, word [esp + 0x1c]
add eax, edx
mov dword [esp + 0x34], eax
fild dword [esp + 0x34]
fild qword [esp + 8]
fdivp st(1)
fmul dword [0x455f00]
call fcn.004028a0
mov edx, dword [0x48d1d8]
mov byte [edx], al
mov eax, dword [0x48d1d8]
mov al, byte [eax]
mov edx, dword [0x48d668]
cmp al, byte [edx]
je 0x455df4
call fcn.00414c64
call fcn.0040f494
mov eax, dword [0x48d9fc]
cmp byte [eax], 0
jne 0x455e13
inc word [esp + 0x18]
dec word [esp + 0x28]
jne 0x455ab9
mov eax, dword [esp + 0x24]
push dword [eax + 0x490]
push dword [eax + 0x48c]
mov eax, dword [esp + 0x2c]
fild qword [eax + 0x48c]
fild qword [esp + 0x10]
faddp st(1)
fsub dword [0x455ef8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov eax, dword [esp + 0x34]
add eax, 0xc
call fcn.00423bdc
mov eax, dword [esp + 0x24]
add eax, 0xc
call fcn.00428820
mov eax, esi
call fcn.00402508
call fcn.0040eb04
mov eax, dword [esp + 0x24]
mov byte [eax + 0x55e], 1
mov bl, 1
mov eax, dword [0x48d550]
mov al, byte [eax + 0x18af]
cmp al, 2
jb 0x455e98
mov edx, dword [0x48d550]
cmp al, 3
ja 0x455e98
mov eax, dword [0x48d550]
cmp byte [eax + 0x18f1], 4
jbe 0x455ea3
mov eax, dword [esp + 0x24]
mov byte [eax + 0x8f], 0
mov eax, dword [0x48d550]
cmp byte [eax + 0x18af], 0
jne 0x455ee9
mov eax, dword [0x48d550]
cmp byte [eax + 0x18d7], 0
jne 0x455ee9
fild dword [0x49bbf8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov ax, 0x55
call fcn.0040bc04
call fcn.0040f4d4
mov eax, dword [0x48da44]
mov edx, 4
call fcn.00411d74
mov eax, ebx
add esp, 0x38
pop ebp
pop edi
pop esi
pop ebx
ret