Function at 0x45c1d0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x58
xor eax, eax
push ebx
push ebp
mov dword [0x879048], eax
push esi
mov dword [0x87904c], eax
push edi
mov dword [0x879050], eax
mov ecx, 0xd2
mov edi, 0x878d00
rep stosd dword es:[edi], eax
mov ecx, dword [0x8bb8d4]
mov dword [0x879054], eax
mov eax, dword [0x85c154]
cmp ecx, eax
jge 0x45c20d
mov dword [0x8bb8d4], eax
mov ecx, dword [0x7283bc]
mov edx, dword [0x728a84]
mov eax, ecx
or eax, 0x20
mov dword [edx*4 + 0x7288f4], ecx
mov edx, dword [0x728a84]
mov dword [0x7283bc], eax
mov eax, dword [0x72ed78]
inc edx
push eax
mov dword [0x728a84], edx
mov dword [0x8ccc38], 0xa
mov byte [0x8cc9e0], 1
call fcn.004ea400
mov edi, dword [0x72ed78]
mov eax, dword [edi + 0x58]
xor esi, esi
test eax, eax
jle 0x45c27e
xor ebx, ebx
mov ecx, dword [edi + 4]
add ecx, ebx
mov al, 1
call fcn.004eafe0
mov eax, dword [edi + 0x58]
inc esi
add ebx, 0x124
cmp esi, eax
jl 0x45c264
push 0
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
push 0
push 0
push 0
push 0
push str.MainCharTest.kfm
push ecx
mov ecx, dword [0x8ec000]
mov eax, esp
mov dword [eax], ecx
mov eax, ecx
test eax, eax
je 0x45c2ab
inc dword [eax + 4]
call fcn.004afb00
add esp, 0x30
xor esi, esi
mov dword [0x87904c], eax
mov dword [esp + 0x14], esi
mov edi, edi
mov ebx, esi
xor edi, edi
imul ebx, ebx, 0x15
mov dword [esp + 0x24], ebx
jmp 0x45c2d0
test edi, edi
jne 0x45c7db
inc esi
push esi
push str.lp_tree__02d.nif
lea edx, [esp + 0x28]
mov dword [esp + 0x28], 0x8cccd0
call fcn.004f3ce0
push 0xc0
call fcn.005354b8
mov ebp, dword [esp + 0x2c]
mov esi, eax
add esp, 0xc
test esi, esi
je 0x45c34c
mov eax, dword [0x8ec000]
mov ebx, dword [0x729444]
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push 0xffffffffffffffff
push ecx
push ecx
mov dword [esi + 4], ecx
push ecx
mov dword [esi], 0x6ff14c
mov dword [esi + 0x1c], ecx
inc ebx
push ecx
mov dword [esi + 0x64], ecx
mov dword [0x729444], ebx
mov dword [esi + 0xbc], ecx
push eax
xor ebx, ebx
mov eax, ebp
mov ecx, esi
call fcn.004be370
mov ebx, dword [esp + 0x24]
jmp 0x45c34e
xor esi, esi
lea eax, [ebp - 8]
test eax, eax
mov dword [ebx*4 + 0x878d00], esi
je 0x45c36c
cmp eax, 0x8cccc8
je 0x45c36c
push eax
call sub.MSVCR71.dll_void___cdecl_operator_delete___void__
add esp, 4
mov esi, dword [esp + 0x14]
push 0
lea edx, [edi + edi*4]
lea eax, [ebx + edi]
mov ecx, dword [eax*4 + 0x878d00]
push edx
call fcn.004c28d0
inc edi
cmp edi, 0x15
jl 0x45c2d0
inc esi
cmp esi, 0xa
mov dword [esp + 0x14], esi
jl 0x45c2c0
fild dword [0x816304]
mov dword [esp + 0x14], 0
mov esi, 0x8e0180
mov dword [esp + 0x20], 0xffa47280
fstp dword [esp + 0x38]
mov ecx, dword [esp + 0x38]
fild dword [0x816308]
mov dword [0x8e84d4], ecx
fstp dword [esp + 0x3c]
mov edx, dword [esp + 0x3c]
mov dword [0x8e84d8], edx
lea ebx, [ebx]
fild dword [esp + 0x20]
mov eax, dword [esp + 0x14]
add eax, 0xffffffec
mov dword [esp + 0x18], 0
fstp dword [esp + 0x40]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x1c], 0xffa47280
jmp 0x45c410
mov ecx, dword [0x8e84d4]
fild dword [esp + 0x1c]
fld dword [esp + 0x40]
mov edx, dword [0x8e84d8]
mov dword [esp + 0x38], ecx
fadd dword [esp + 0x38]
mov edi, dword [0x72ed78]
mov dword [esp + 0x3c], edx
fstp dword [esp + 0x38]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x30], eax
fadd dword [esp + 0x3c]
push 1
fstp dword [esp + 0x40]
mov ecx, dword [esp + 0x40]
fld dword [esp + 0x34]
mov dword [esp + 0x38], ecx
fmul dword [0x715610]
fstp dword [esp + 0x34]
mov eax, dword [esp + 0x34]
fld dword [esp + 0x38]
fmul dword [0x715610]
fstp dword [esp + 0x38]
mov edx, dword [esp + 0x38]
push edx
push eax
mov al, 1
call fcn.004e8db0
fstp dword [esp + 0x54]
fld dword [esp + 0x34]
mov edi, dword [0x72ed78]
fadd dword [0x71555c]
push 1
mov al, 1
fstp dword [esp + 0x28]
fld dword [esp + 0x34]
mov ebp, dword [esp + 0x28]
fadd dword [0x71555c]
push ebp
fstp dword [esp + 0x30]
mov ebx, dword [esp + 0x30]
push ebx
call fcn.004e8db0
fstp dword [esp + 0x58]
fld dword [esp + 0x30]
mov edi, dword [0x72ed78]
fsub dword [0x71555c]
push 1
push ebp
mov al, 1
fstp dword [esp + 0x30]
mov ebp, dword [esp + 0x30]
push ebp
call fcn.004e8db0
fstp dword [esp + 0x5c]
fld dword [esp + 0x34]
mov edi, dword [0x72ed78]
fsub dword [0x71555c]
push 1
mov al, 1
fstp dword [esp + 0x28]
mov ecx, dword [esp + 0x28]
push ecx
push ebx
call fcn.004e8db0
fstp dword [esp + 0x60]
mov edx, dword [esp + 0x24]
mov edi, dword [0x72ed78]
push 1
push edx
push ebp
mov al, 1
call fcn.004e8db0
fstp dword [esp + 0x64]
mov ecx, dword [0x729430]
mov edx, dword [0x729434]
mov eax, esi
mov dword [eax], ecx
mov ecx, dword [0x729438]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
fld dword [esp + 0x58]
mov edx, dword [esp + 0x54]
fcomp dword [esp + 0x54]
mov dword [esp + 0x10], edx
fnstsw ax
test ah, 5
jp 0x45c560
mov eax, dword [esp + 0x58]
mov dword [esp + 0x10], eax
fld dword [esp + 0x5c]
fcomp dword [esp + 0x10]
fnstsw ax
test ah, 5
jp 0x45c577
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x10], ecx
fld dword [esp + 0x60]
fcomp dword [esp + 0x10]
fnstsw ax
test ah, 5
jp 0x45c58e
mov edx, dword [esp + 0x60]
mov dword [esp + 0x10], edx
fld dword [esp + 0x64]
fcomp dword [esp + 0x10]
fnstsw ax
test ah, 5
jp 0x45c5a5
mov eax, dword [esp + 0x64]
mov dword [esp + 0x10], eax
fld dword [esp + 0x54]
fld dword [esp + 0x58]
fcomp dword [esp + 0x54]
fnstsw ax
test ah, 0x41
jne 0x45c5be
fstp st(0)
fld dword [esp + 0x58]
fld dword [esp + 0x5c]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x45c5d1
fstp st(0)
fld dword [esp + 0x5c]
fld dword [esp + 0x60]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x45c5e4
fstp st(0)
fld dword [esp + 0x60]
fld dword [esp + 0x64]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x45c5f7
fstp st(0)
fld dword [esp + 0x64]
fld dword [esp + 0x10]
fsubr st(1)
fcomp dword [0x7157a0]
fnstsw ax
fstp st(0)
test ah, 0x41
je 0x45c704
fld dword [esp + 0x10]
fcomp dword [0x715554]
fnstsw ax
test ah, 0x41
jne 0x45c704
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
mov eax, dword [0x72ed78]
push ecx
push edx
call fcn.004e90f0
fstp dword [esp + 0x24]
mov edi, dword [sym.imp.MSVCR71.dll_rand]
call edi
cdq
mov ecx, 0xff
idiv ecx
mov dword [esp + 0x28], edx
fild dword [esp + 0x28]
fmul dword [0x71556c]
fcomp dword [esp + 0x24]
fnstsw ax
test ah, 5
jp 0x45c704
call edi
and eax, 0x80000001
jns 0x45c678
dec eax
or eax, 0xfffffffe
inc eax
je 0x45c704
fild dword [esp + 0x2c]
mov ebx, dword [esp + 0x18]
lea edx, [ebx - 0x14]
mov dword [esp + 0x28], edx
fmul dword [0x71579c]
mov eax, esi
fstp dword [esp + 0x48]
mov ecx, dword [esp + 0x48]
fild dword [esp + 0x28]
mov dword [eax], ecx
fmul dword [0x71579c]
fstp dword [esp + 0x4c]
mov edx, dword [esp + 0x4c]
fld dword [esp + 0x10]
mov dword [eax + 4], edx
fadd dword [0x715798]
fstp dword [esp + 0x50]
mov ecx, dword [esp + 0x50]
mov dword [eax + 8], ecx
call edi
cdq
mov ecx, 0x168
idiv ecx
imul edx, edx, 0xb60b60
mov dword [esi + 0xc], edx
call edi
cdq
mov ecx, 0x1e
idiv ecx
add dl, 0x55
mov byte [esi + 0x11], dl
call edi
cdq
mov ecx, 0xa
idiv ecx
mov eax, dword [esp + 0x14]
mov ecx, ebx
mov byte [esi + 0x10], dl
call fcn.00475b30
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
add eax, 0x493e0
inc ebx
add esi, 0x14
cmp eax, 0x602160
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], eax
jl 0x45c410
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x14]
add eax, 0x493e0
inc edi
cmp eax, 0x602160
mov dword [esp + 0x14], edi
mov dword [esp + 0x20], eax
jl 0x45c3e0
mov edx, dword [0x8ec000]
push 0
push 0
push 0
push 0xffffffffffffffff
push 1
push 0xa
or ecx, 0xffffffff
call fcn.004814c0
mov edx, dword [0x8ec000]
push 0
push 0
push 0
push 0xffffffffffffffff
push 1
push 0xa
or ecx, 0xffffffff
mov dword [0x879050], eax
call fcn.004814c0
mov edx, dword [0x72ed78]
mov dword [0x879054], eax
mov al, byte [esp + 0x9c]
add esp, 0x30
test al, al
mov byte [edx + 0x79], 0
je 0x45c876
mov ebx, dword [0x81630c]
mov ebp, dword [0x816304]
xor eax, eax
mov ecx, 0x48
mov edi, 0x85c790
rep stosd dword es:[edi], eax
xor edi, edi
nop
test edi, edi
je 0x45c7fc
xor edx, edx
mov eax, edi
mov ecx, 3
div ecx
dec edx
neg edx
sbb edx, edx
neg edx
add edx, 2
jmp 0x45c801
mov edx, esi
imul edx, edx, 0x54
mov ecx, dword [edx + 0x878d00]
push 1
call fcn.004bbbd0
lea ecx, [ebx + edi]
mov dword [ecx*4 + 0x878d00], eax
jmp 0x45c370
mov edx, 1
test edi, edi
mov dword [edi*4 + 0x85c790], edx
jne 0x45c854
mov eax, dword [0x727678]
imul eax, eax, 0xf4240
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
mov eax, 0x55555556
imul ecx
mov esi, edx
shr esi, 0x1f
add esi, edx
mov eax, esi
mov ecx, ebx
call fcn.004dcac0
add eax, ebp
mov dword [0x85c7b0], eax
lea ecx, [ebx + 0x40000000]
mov eax, esi
call fcn.004dcac0
add eax, dword [0x816308]
mov dword [0x85c7d0], eax
mov dword [edi*4 + 0x85c7f0], 0
lea eax, [ebx + 0x15555555]
mov dword [edi*4 + 0x85c810], eax
inc edi
cmp edi, 8
jl 0x45c7c0
mov eax, dword [0x85c164]
test al, 0x40
jne 0x45c889
mov dword [0x87951c], 0
or eax, 0xc0
mov dword [0x85c164], eax
mov ecx, dword [0x8ebfe8]
and al, 0x80
neg al
mov edx, 0x64
push 2
mov dword [0x727684], 0x64
mov dword [0x8bb970], 0xffffffff
sbb eax, eax
and eax, 0xffffffd8
add eax, 0x28
sub edx, eax
mov dword [esp + 0x70], edx
fild dword [esp + 0x70]
fmul dword [0x715584]
fstp dword [esp + 0x70]
call fcn.00535600
fld dword [esp + 0x6c]
mov ecx, eax
fcomp dword [0x715554]
fnstsw ax
test ah, 1
jne 0x45c8f2
fld dword [esp + 0x6c]
jmp 0x45c8f8
fld dword [0x715554]
fstp dword [ecx + 0x24]
call fcn.004adca0
mov ebx, dword [0x81630c]
test ebx, ebx
mov esi, 0xea60
mov ecx, ebx
jns 0x45c91c
mov esi, 0xffff15a0
and ecx, 0x7fffffff
test ecx, 0x40000000
je 0x45c92d
mov eax, 0x7fffffff
sub eax, ecx
mov ecx, eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x7d00
mov edi, 1
jle 0x45c957
mov eax, esi
cdq
sub eax, edx
sar eax, 1
mov esi, eax
cdq
xor eax, edx
sub eax, edx
add edi, edi
cmp eax, 0x7d00
jg 0x45c940
mov edx, esi
call fcn.00495330
imul eax, edi
sub dword [0x816304], eax
lea ecx, [ebx + 0x40000000]
test ecx, ecx
mov esi, 0xea60
jns 0x45c981
mov esi, 0xffff15a0
and ecx, 0x7fffffff
test ecx, 0x40000000
je 0x45c992
mov edx, 0x7fffffff
sub edx, ecx
mov ecx, edx
mov eax, esi
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x7d00
mov edi, 1
jle 0x45c9bc
mov eax, esi
cdq
sub eax, edx
sar eax, 1
mov esi, eax
cdq
xor eax, edx
sub eax, edx
add edi, edi
cmp eax, 0x7d00
jg 0x45c9a5
mov edx, esi
call fcn.00495330
imul eax, edi
mov ecx, dword [0x816308]
push 0xbf800000
sub ecx, eax
push 0xffffffffffffffff
mov dword [0x816308], ecx
push 0xffffffffffffffff
push 0x66
or esi, 0xffffffff
mov eax, 0x8ca228
or ecx, 0xffffffff
call fcn.00488840
push 0
call fcn.004a3d10
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret