Function at 0x4074f0
Capabilities:
Encode data using xor

Disassembly:
push ecx
mov eax, dword [0x4b1bc4]
push ebx
xor ebx, ebx
push esi
mov esi, ecx
cmp dword [eax + 0x24], ebx
je 0x407a22
mov eax, dword [esp + 0x10]
cmp dword [esi + 8], eax
je 0x407a22
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.00450b20
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.0043d850
mov ecx, dword [esi + 4]
push edi
call fcn.0043d690
mov eax, dword [esi + 8]
mov ecx, dword [esi + 4]
push eax
call fcn.0043d510
lea edi, [esi + 0x4c]
mov dword [esp + 0x10], edi
mov ebp, 0x3d8
mov ebx, 0x10
jmp 0x407586
fstp st(0)
call fcn.00451b0a
and eax, 0x1f
mov ecx, 0x20
sub ecx, eax
mov dword [esp + 0x18], ecx
call fcn.00451b0a
and eax, 0x1f
add eax, 0x20
mov dword [esp + 0x1c], eax
call fcn.00451b0a
and eax, 0x80000001
jns 0x4075b9
dec eax
or eax, 0xfffffffe
inc eax
jne 0x4075ca
call fcn.00451b0a
and eax, 0x1f
sub eax, 0x20
mov dword [esp + 0x18], eax
call fcn.00451b0a
and eax, 0x8000001f
jns 0x4075db
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 0x407584
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 0x40762b
add edx, 0x20
fstp st(0)
cmp edx, 0x300
mov dword [esp + 0x18], edx
jl 0x407619
mov eax, dword [esp + 0x20]
cmp eax, 0xa
ja case.0x407673.7
jmp dword [eax*4 + 0x407a28]
mov esi, dword [esp + 0x10]
fstp st(0)
mov edi, 0x3d8
call fcn.00451b0a
neg eax
cdq
mov ecx, 0x14
idiv ecx
add esi, 0x30
sub edi, 1
mov dword [esi - 0x30], edx
jne 0x407685
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.00451b0a
and eax, 0x1f
mov edx, 0x30
sub edx, eax
mov dword [esp + 0x18], edx
call fcn.00451b0a
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 0x4076b7
sub ebp, 1
jne 0x4076b2
pop edi
pop ebp
pop esi
pop ebx
pop ecx
ret 0x10
xor ebp, ebp
fstp st(0)
add esi, 0x5c
jmp 0x407712
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.00451b0a
and eax, 0x80000001
jns 0x407735
dec eax
or eax, 0xfffffffe
inc eax
sub eax, ebx
lea edx, [eax + edi - 0x29]
mov dword [esi - 0x10], edx
call fcn.00451b0a
and eax, 0x1f
mov ecx, 0x20
sub ecx, eax
mov dword [esp + 0x18], ecx
call fcn.00451b0a
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 0x407724
inc ebp
cmp ebp, 0x18
jl 0x407710
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.00451b0a
and eax, 0x80000001
jns 0x4077a6
dec eax
or eax, 0xfffffffe
inc eax
lea eax, [eax + edi - 0x18]
mov dword [esi - 0x10], eax
call fcn.00451b0a
and eax, 8
mov ecx, 4
sub ecx, eax
mov dword [esp + 0x18], ecx
call fcn.00451b0a
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 0x407795
inc edi
cmp edi, 0x18
jl 0x407790
pop edi
pop ebp
pop esi
pop ebx
pop ecx
ret 0x10
fstp st(0)
xor ebp, ebp
fld dword [0x481648]
add esi, 0x5c
fstp dword [esi - 0x20]
jmp 0x407806
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.00451b0a
and eax, 0x80000001
jns 0x407829
dec eax
or eax, 0xfffffffe
inc eax
sub eax, ebx
sub eax, edi
mov dword [esi - 0x10], eax
call fcn.00451b0a
and eax, 0x1f
sub eax, 0x20
mov dword [esp + 0x18], eax
call fcn.00451b0a
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 0x407818
inc ebp
cmp ebp, 0x18
jl 0x407804
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.00451b0a
and eax, 0x3f
mov ecx, 0x20
sub ecx, eax
mov dword [esp + 0x18], ecx
fild dword [esp + 0x18]
fstp dword [esi]
call fcn.00451b0a
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 0x407886
sub ebp, 1
jne 0x407881
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.00451b0a
and eax, 8
mov ecx, 2
sub ecx, eax
mov dword [esp + 0x18], ecx
call fcn.00451b0a
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 0x4078e7
sub ebp, 2
cmp ebp, 0xffffffd0
jg 0x4078e0
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.00451b0a
and eax, 8
mov edx, 4
sub edx, eax
mov dword [esp + 0x18], edx
call fcn.00451b0a
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 0x407950
dec ebp
cmp ebp, 0xfffffff4
jg 0x407940
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.00451b0a
and eax, 0x8000000f
jns 0x4079d9
dec eax
or eax, 0xfffffff0
inc eax
sub eax, 8
mov dword [esp + 0x18], eax
call fcn.00451b0a
and eax, 0x8000001f
jns 0x4079f1
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 0x4079c5
sub ebp, 1
jne 0x4079c0
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