Function at 0x407b20
Capabilities:
Encode data using xor

Disassembly:
push ecx
mov eax, dword [0x4c08ec]
push ebx
xor ebx, ebx
push esi
mov esi, ecx
cmp dword [eax + 0x24], ebx
je 0x408052
mov eax, dword [esp + 0x10]
cmp dword [esi + 8], eax
je 0x408052
mov ecx, dword [esp + 0x14]
push ebp
push edi
mov dword [esi + 0x24], eax
push 0xb8b0
xor eax, eax
mov dword [esi + 0x20], ecx
mov edi, 1
mov dword [esi + 0xc], edi
lea edx, [esi + 0x48]
push ebx
mov dword [esi + 0x40], eax
push edx
mov dword [esi + 0x44], eax
call fcn.0045ab70
fld1
mov ecx, dword [esi + 4]
fst dword [esi + 0x3c]
add esp, 8
fstp dword [esp]
mov dword [esi + 0x2c], ebx
mov dword [esi + 0x30], ebx
mov dword [esi + 0x38], edi
mov dword [esi + 0x34], edi
call fcn.00444470
mov ecx, dword [esi + 4]
push edi
call fcn.00444240
mov eax, dword [esi + 8]
mov ecx, dword [esi + 4]
push eax
call fcn.004440c0
lea edi, [esi + 0x4c]
mov dword [esp + 0x10], edi
mov ebp, 0x3d8
mov ebx, 0x10
jmp 0x407bb6
fstp st(0)
call fcn.0045bb6b
and eax, 0x1f
mov ecx, 0x20
sub ecx, eax
mov dword [esp + 0x18], ecx
call fcn.0045bb6b
and eax, 0x1f
add eax, 0x20
mov dword [esp + 0x1c], eax
call fcn.0045bb6b
and eax, 0x80000001
jns 0x407be9
dec eax
or eax, 0xfffffffe
inc eax
jne 0x407bfa
call fcn.0045bb6b
and eax, 0x1f
sub eax, 0x20
mov dword [esp + 0x18], eax
call fcn.0045bb6b
and eax, 0x8000001f
jns 0x407c0b
dec eax
or eax, 0xffffffe0
inc eax
fild dword [esp + 0x18]
add eax, ebx
mov dword [edi - 4], eax
mov dword [edi], 0
fstp dword [edi + 0x10]
mov dword [edi + 4], ebx
fild dword [esp + 0x1c]
add edi, 0x30
sub ebp, 1
fstp dword [edi - 0x1c]
fldz
fst dword [edi - 0x18]
fst dword [edi - 0x14]
fst dword [edi - 8]
jne 0x407bb4
xor ebx, ebx
xor edx, edx
mov dword [esp + 0x18], edx
lea eax, [esi + 0x70]
fild dword [esp + 0x18]
xor ecx, ecx
mov dword [esp + 0x18], ecx
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fild dword [esp + 0x18]
add ecx, 0x20
add eax, 0x30
cmp ecx, 0x520
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
mov dword [esp + 0x18], ecx
fst dword [eax - 0x34]
fstp dword [eax - 0x4c]
fst dword [eax - 0x30]
fst dword [eax - 0x48]
jl 0x407c5b
add edx, 0x20
fstp st(0)
cmp edx, 0x300
mov dword [esp + 0x18], edx
jl 0x407c49
mov eax, dword [esp + 0x20]
cmp eax, 0xa
ja case.0x407ca3.7
jmp dword [eax*4 + 0x408058]
mov esi, dword [esp + 0x10]
fstp st(0)
mov edi, 0x3d8
call fcn.0045bb6b
neg eax
cdq
mov ecx, 0x14
idiv ecx
add esi, 0x30
sub edi, 1
mov dword [esi - 0x30], edx
jne 0x407cb5
pop edi
pop ebp
pop esi
pop ebx
pop ecx
ret 0x10
fstp dword [esi + 0x3c]
add esi, 0x5c
mov ebp, 0x18
mov edi, 0x29
mov dword [esi - 0x10], ebx
call fcn.0045bb6b
and eax, 0x1f
mov edx, 0x30
sub edx, eax
mov dword [esp + 0x18], edx
call fcn.0045bb6b
fild dword [esp + 0x18]
and eax, 0x1f
mov ecx, 0x30
sub ecx, eax
fstp dword [esi]
mov dword [esp + 0x1c], ecx
fild dword [esp + 0x1c]
add esi, 0x30
sub edi, 1
fstp dword [esi - 0x2c]
jne 0x407ce7
sub ebp, 1
jne 0x407ce2
pop edi
pop ebp
pop esi
pop ebx
pop ecx
ret 0x10
xor ebp, ebp
fstp st(0)
add esi, 0x5c
jmp 0x407d42
xor ebx, ebx
mov eax, 0x66666667
imul ebp
sar edx, 1
mov ebx, edx
shr ebx, 0x1f
xor edi, edi
add ebx, edx
call fcn.0045bb6b
and eax, 0x80000001
jns 0x407d65
dec eax
or eax, 0xfffffffe
inc eax
sub eax, ebx
lea edx, [eax + edi - 0x29]
mov dword [esi - 0x10], edx
call fcn.0045bb6b
and eax, 0x1f
mov ecx, 0x20
sub ecx, eax
mov dword [esp + 0x18], ecx
call fcn.0045bb6b
fild dword [esp + 0x18]
and eax, 0x30
mov edx, 0x20
sub edx, eax
fstp dword [esi]
mov dword [esp + 0x1c], edx
fild dword [esp + 0x1c]
inc edi
add esi, 0x30
cmp edi, 0x29
fstp dword [esi - 0x2c]
jl 0x407d54
inc ebp
cmp ebp, 0x18
jl 0x407d40
pop edi
pop ebp
pop esi
pop ebx
pop ecx
ret 0x10
fstp dword [esi + 0x3c]
xor edi, edi
add esi, 0x5c
mov ebx, 0x29
call fcn.0045bb6b
and eax, 0x80000001
jns 0x407dd6
dec eax
or eax, 0xfffffffe
inc eax
lea eax, [eax + edi - 0x18]
mov dword [esi - 0x10], eax
call fcn.0045bb6b
and eax, 8
mov ecx, 4
sub ecx, eax
mov dword [esp + 0x18], ecx
call fcn.0045bb6b
fild dword [esp + 0x18]
and eax, 0x1f
add eax, 0x20
fstp dword [esi]
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
add esi, 0x30
sub ebx, 1
fstp dword [esi - 0x2c]
jne 0x407dc5
inc edi
cmp edi, 0x18
jl 0x407dc0
pop edi
pop ebp
pop esi
pop ebx
pop ecx
ret 0x10
fstp st(0)
xor ebp, ebp
fld dword [0x49c144]
add esi, 0x5c
fstp dword [esi - 0x20]
jmp 0x407e36
xor ebx, ebx
mov eax, 0x66666667
imul ebp
sar edx, 1
mov ebx, edx
shr ebx, 0x1f
xor edi, edi
add ebx, edx
call fcn.0045bb6b
and eax, 0x80000001
jns 0x407e59
dec eax
or eax, 0xfffffffe
inc eax
sub eax, ebx
sub eax, edi
mov dword [esi - 0x10], eax
call fcn.0045bb6b
and eax, 0x1f
sub eax, 0x20
mov dword [esp + 0x18], eax
call fcn.0045bb6b
fild dword [esp + 0x18]
and eax, 0x30
mov edx, 0x20
sub edx, eax
fstp dword [esi]
mov dword [esp + 0x1c], edx
fild dword [esp + 0x1c]
inc edi
add esi, 0x30
cmp edi, 0x29
fstp dword [esi - 0x2c]
jl 0x407e48
inc ebp
cmp ebp, 0x18
jl 0x407e34
pop edi
pop ebp
pop esi
pop ebx
pop ecx
ret 0x10
fstp dword [esi + 0x3c]
add esi, 0x5c
mov ebp, 0x18
mov edi, 0x29
mov dword [esi - 0x10], ebx
call fcn.0045bb6b
and eax, 0x3f
mov ecx, 0x20
sub ecx, eax
mov dword [esp + 0x18], ecx
fild dword [esp + 0x18]
fstp dword [esi]
call fcn.0045bb6b
and eax, 0x30
mov edx, 0x20
sub edx, eax
mov dword [esp + 0x18], edx
fild dword [esp + 0x18]
add esi, 0x30
sub edi, 1
fstp dword [esi - 0x2c]
jne 0x407eb6
sub ebp, 1
jne 0x407eb1
pop edi
pop ebp
pop esi
pop ebx
pop ecx
ret 0x10
fstp dword [esi + 0x3c]
xor ebp, ebp
add esi, 0x5c
lea esp, [esp]
mov edi, ebp
mov ebx, 0x29
mov dword [esi - 0x10], edi
call fcn.0045bb6b
and eax, 8
mov ecx, 2
sub ecx, eax
mov dword [esp + 0x18], ecx
call fcn.0045bb6b
fild dword [esp + 0x18]
and eax, 8
sub eax, 2
fstp dword [esi]
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
add esi, 0x30
dec edi
sub ebx, 1
fstp dword [esi - 0x2c]
jne 0x407f17
sub ebp, 2
cmp ebp, 0xffffffd0
jg 0x407f10
pop edi
pop ebp
pop esi
pop ebx
pop ecx
ret 0x10
fstp dword [esi + 0x3c]
mov ebp, 0xc
add esi, 0x5c
lea ecx, [ecx]
mov eax, ebp
cdq
mov ebx, eax
xor ebx, edx
sub ebx, edx
mov edi, 0x14
mov edi, edi
mov eax, edi
cdq
xor eax, edx
sub eax, edx
add eax, ebx
neg eax
mov dword [esi - 0x10], eax
call fcn.0045bb6b
and eax, 8
mov edx, 4
sub edx, eax
mov dword [esp + 0x18], edx
call fcn.0045bb6b
fild dword [esp + 0x18]
and eax, 8
mov ecx, 4
sub ecx, eax
fstp dword [esi]
mov dword [esp + 0x1c], ecx
fild dword [esp + 0x1c]
dec edi
add esi, 0x30
cmp edi, 0xffffffeb
fstp dword [esi - 0x2c]
jg 0x407f80
dec ebp
cmp ebp, 0xfffffff4
jg 0x407f70
pop edi
pop ebp
pop esi
pop ebx
pop ecx
ret 0x10
fstp dword [esi + 0x3c]
mov dword [esi + 0x38], 4
add esi, 0x5c
mov ebp, 0x18
lea ebx, [ebx]
mov edi, 0x29
mov dword [esi - 0x10], ebx
call fcn.0045bb6b
and eax, 0x8000000f
jns 0x408009
dec eax
or eax, 0xfffffff0
inc eax
sub eax, 8
mov dword [esp + 0x18], eax
call fcn.0045bb6b
and eax, 0x8000001f
jns 0x408021
dec eax
or eax, 0xffffffe0
inc eax
fild dword [esp + 0x18]
mov edx, 0xffffffe0
sub edx, eax
mov dword [esp + 0x1c], edx
fstp dword [esi]
add esi, 0x30
sub edi, 1
fild dword [esp + 0x1c]
fstp dword [esi - 0x2c]
jne 0x407ff5
sub ebp, 1
jne 0x407ff0
pop edi
pop ebp
pop esi
pop ebx
pop ecx
ret 0x10
pop edi
fstp st(0)
pop ebp
pop esi
pop ebx
pop ecx
ret 0x10