Function at 0x421720
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x48
mov eax, dword [0x48b270]
xor eax, esp
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x54]
push ebx
push ebp
mov ebx, ecx
mov ecx, dword [esp + 0x60]
push esi
push edi
mov edi, dword [ebx + 8]
add edi, edi
add edi, edi
push edi
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x38], eax
mov dword [esp + 0x44], ecx
call fcn.0043189c
push edi
mov esi, eax
call fcn.0043189c
mov dword [esp + 0x30], eax
add esp, 8
xor eax, eax
test edi, edi
jle 0x421788
mov edx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x70]
sub edx, esi
xor cl, cl
cmp eax, ebp
jg 0x421780
lea ecx, [edx + eax]
mov cl, byte [ecx + esi]
mov byte [eax + esi], cl
inc eax
cmp eax, edi
jl 0x421774
mov eax, dword [ebx + 8]
mov edx, dword [esp + 0x28]
push 0
push edi
push esi
add eax, eax
push edx
add eax, eax
push eax
push esi
mov ecx, ebx
call fcn.00421640
push esi
call fcn.004318cb
push 0x10
call fcn.0043189c
mov ecx, dword [esp + 0x80]
add esp, 8
mov esi, eax
mov dword [esp + 0x24], esi
test ecx, ecx
jne 0x4217fd
push ecx
call fcn.00451de0
push eax
call fcn.00454796
add esp, 8
call fcn.004547a8
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fmul qword [0x4717c0]
fmul qword [0x4717f8]
fadd qword [0x4717f0]
call fcn.00454850
mov ecx, eax
imul ecx, ecx, 0x3e8
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fdiv qword [0x4717e8]
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
fsub dword [0x4898f8]
fistp dword [esp + 0x14]
mov eax, 0x10624dd3
imul ecx
mov ebp, dword [esp + 0x14]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x3e8
sub ecx, eax
lea edx, [esi + 4]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], edx
xor esi, esi
mov dword [esp + 0x1c], 4
nop
test ebp, ebp
jle 0x42186b
mov ecx, esi
and ecx, 0x1f
mov eax, ebp
test ebp, ebp
jns 0x421867
sar eax, 1
or eax, 0x7fffffff
dec ecx
sar eax, cl
jmp 0x4218a4
jge 0x4218a2
mov eax, 2
mov edx, esi
lea ecx, [eax - 1]
test esi, esi
jle 0x421897
jmp 0x421880
test dl, 1
je 0x421888
imul ecx, eax
sar edx, 1
je 0x421893
mov ebx, eax
imul eax, ebx
jmp 0x421880
mov ebx, dword [esp + 0x38]
mov eax, ebp
cdq
idiv ecx
mov edx, dword [esp + 0x18]
jmp 0x4218a4
xor eax, eax
mov cl, byte [esp + 0x10]
mov byte [edx - 4], al
mov byte [edx], cl
inc edx
add esi, 8
sub dword [esp + 0x1c], 1
mov dword [esp + 0x18], edx
jne 0x421850
push 9
call fcn.0043189c
mov esi, eax
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov dword [esi], edx
mov eax, dword [eax + 4]
mov dword [esi + 4], eax
mov byte [esi + 8], 0
mov eax, 4
mov dword [ebx + 4], eax
mov dword [ebx + 8], eax
mov eax, dword [ebx + 0x14]
add esp, 4
mov dword [esp + 0x3c], esi
mov dword [ebx], 0xa
test eax, eax
je 0x4218ff
push eax
call fcn.004318cb
add esp, 4
push 0x10
call fcn.0043189c
xor ecx, ecx
mov dword [ebx + 0x14], eax
mov dword [eax], ecx
mov dword [eax + 4], ecx
add esp, 4
cmp edi, 0x10
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
jl 0x421923
mov edi, 0x10
mov ecx, dword [esp + 0x28]
mov edx, dword [ebx + 0x14]
push edi
push ecx
push edx
call fcn.00453270
add esp, 0xc
mov ecx, ebx
call fcn.00420c90
mov eax, dword [ebx + 0x14]
push eax
mov ecx, ebx
call fcn.00420d00
fild dword [esp + 0x60]
mov ecx, dword [esp + 0x60]
test ecx, ecx
jge 0x421959
fadd dword [0x4717e0]
fmul qword [0x4717d8]
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
fadd dword [0x4898fc]
fistp dword [esp + 0x20]
xor ebp, ebp
xor ebx, ebx
cmp dword [esp + 0x20], ebp
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], ebp
jle 0x421b05
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x14], edx
nop
fld qword [0x4717d0]
xor edi, edi
fild dword [esp + 0x18]
mov dword [esp + 0x1c], edi
fmul qword [0x4717c8]
call fcn.00454850
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x24]
add eax, 0xb
mov ebx, eax
mov dword [esp + 0x2c], eax
test ebp, ebp
jle 0x4219d7
mov ecx, edi
and ecx, 0x1f
mov eax, ebp
test ebp, ebp
jns 0x4219d3
sar eax, 1
or eax, 0x7fffffff
dec ecx
sar eax, cl
jmp 0x421a03
jge 0x421a01
mov eax, 2
mov edx, edi
lea ecx, [eax - 1]
test edi, edi
jle 0x4219fa
test dl, 1
je 0x4219ef
imul ecx, eax
sar edx, 1
je 0x4219fa
mov esi, eax
imul eax, esi
jmp 0x4219e7
mov eax, ebp
cdq
idiv ecx
jmp 0x421a03
xor eax, eax
fild dword [esp + 0x1c]
mov byte [ebx + 4], al
fmul st(1)
call fcn.00454850
mov ecx, eax
mov eax, dword [esp + 0x30]
test eax, eax
jle 0x421a2e
and ecx, 0x1f
test eax, eax
jns 0x421a2a
sar eax, 1
or eax, 0x7fffffff
dec ecx
sar eax, cl
jmp 0x421a5a
jge 0x421a58
mov edx, 2
lea esi, [edx - 1]
test ecx, ecx
jle 0x421a53
test cl, 1
je 0x421a44
imul esi, edx
sar ecx, 1
je 0x421a4f
mov ebx, edx
imul edx, ebx
jmp 0x421a3c
mov ebx, dword [esp + 0x2c]
cdq
idiv esi
jmp 0x421a5a
xor eax, eax
inc dword [esp + 0x1c]
mov byte [ebx], al
add edi, 8
dec ebx
cmp edi, 0x20
mov dword [esp + 0x2c], ebx
jl 0x4219bc
mov ecx, dword [esp + 0x24]
fstp st(0)
lea eax, [esp + 0x44]
push eax
push ecx
mov ecx, dword [esp + 0x40]
call fcn.00421150
mov eax, dword [esp + 0x20]
dec eax
cmp ebp, eax
jge 0x421a96
mov esi, 0x10
jmp 0x421a9f
mov esi, dword [esp + 0x60]
dec esi
and esi, 0xf
inc esi
push esi
call fcn.0043189c
add esp, 4
xor ecx, ecx
mov edi, eax
test esi, esi
jle 0x421acc
lea ebp, [esp + 0x44]
sub ebp, edi
mov dl, byte [eax + ebp]
mov ebx, dword [esp + 0x14]
xor dl, byte [ecx + ebx]
inc ecx
mov byte [eax], dl
inc eax
cmp ecx, esi
jl 0x421ab6
mov ebp, dword [esp + 0x18]
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x34]
push esi
add eax, ebx
push edi
push eax
call fcn.00453270
add ebx, esi
push edi
mov dword [esp + 0x20], ebx
call fcn.004318cb
add dword [esp + 0x24], 0x10
inc ebp
add esp, 0x10
cmp ebp, dword [esp + 0x20]
mov dword [esp + 0x18], ebp
jl 0x421990
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x34]
push ebx
lea ecx, [edi + 8]
push edi
push ecx
call fcn.00454900
mov edx, dword [esi]
mov ecx, dword [esp + 0x4c]
mov dword [edi], edx
mov eax, dword [esi + 4]
mov edx, dword [esp + 0x30]
mov dword [edi + 4], eax
add ebx, 8
push edx
mov dword [ecx], ebx
call fcn.004318cb
push esi
call fcn.004318cb
mov eax, dword [esp + 0x3c]
push eax
call fcn.004318cb
mov ecx, dword [esp + 0x6c]
add esp, 0x18
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004517f0
add esp, 0x48
ret 0x20