Function at 0x45c99f
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc30
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, ecx
movzx eax, word [esi + 1]
mov ecx, 0x100a
mov dword [ebp - 4], edi
cmp eax, ecx
jg 0x45d2d8
je 0x45d29e
add ecx, 0xfffffffa
cmp eax, ecx
jg 0x45d195
je 0x45d146
sub eax, 3
je 0x45ccf7
sub eax, 0xffe
je 0x45caeb
dec eax
je 0x45ca2b
dec eax
jne 0x45dbe9
and dword [ebp + 8], 0
lea ebx, [esi + 0xf]
push ebx
call fcn.00466936
pop ecx
add eax, 5
movzx ecx, word [esi + 0xd]
cmp ecx, eax
jne 0x45ca1f
push ebx
call fcn.00466936
mov eax, dword [eax + esi + 0x10]
pop ecx
jmp 0x45ca22
mov eax, dword [ebp + 8]
push eax
push 1
push ebx
jmp 0x45dbe2
xor ebx, ebx
cmp word [esi + 0xd], bx
jbe 0x45dbe9
lea eax, [esi + 0xf]
mov dword [ebp - 8], eax
add eax, 8
push eax
call fcn.00466936
add eax, 9
pop ecx
mov ecx, edi
mov al, byte [eax + esi + 0xf]
mov byte [ebp + 0xb], al
mov eax, dword [ebp - 8]
add eax, 8
push eax
call fcn.0045fbcd
cmp eax, ebx
jne 0x45caca
cmp byte [edi + 0xf53c], bl
je 0x45dbe9
cmp byte [ebp + 0xb], bl
jne 0x45dbe9
cmp byte [edi + 0xf53d], bl
jne 0x45dbe9
mov ecx, edi
call fcn.0045efd0
mov ecx, edi
mov byte [edi + 0xf53d], 1
call fcn.0045efe8
cmp byte [edi + 0xf53d], bl
je 0x45caab
push 0xa
call dword [0x100170c4]
jmp 0x45ca99
mov ecx, edi
call fcn.0045efd0
mov eax, dword [ebp - 8]
mov ecx, edi
mov eax, dword [eax + 4]
mov dword [edi + 0xf540], eax
call fcn.0045efe8
jmp 0x45dbe9
cmp byte [ebp + 0xb], bl
je 0x45cadf
push dword [ebp - 8]
mov ecx, edi
push eax
call fcn.0045c7d8
jmp 0x45dbe9
or dword [eax + 0x104], 0xffffffff
jmp 0x45dbe9
lea eax, [esi + 0xf]
mov dword [ebp + 8], eax
add eax, 8
push eax
call fcn.00466936
movzx ecx, word [esi + 0xd]
add eax, 9
push 0x40
sub ecx, eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 8], ecx
xor ebx, ebx
pop ecx
xor eax, eax
lea edi, [ebp - 0x11f]
mov byte [ebp - 0x120], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [ebp + 8]
mov dword [esp], 0x1001c678
add eax, 8
push eax
call dword [0x10017248]
pop ecx
test eax, eax
pop ecx
jne 0x45cb45
push ebx
push ebx
push dword [ebp + 8]
jmp 0x45cd83
mov eax, dword [0x1002227c]
cmp eax, 2
je 0x45cbb5
cmp eax, 3
je 0x45cbb5
lea eax, [ebp - 0x120]
push 0x104
push eax
call dword [0x100171b0]
lea eax, [ebp - 0x120]
push eax
call fcn.00466936
cmp byte [ebp + eax - 0x121], 0x5c
pop ecx
je 0x45cb92
lea eax, [ebp - 0x120]
push eax
call fcn.00466936
pop ecx
mov byte [ebp + eax - 0x120], 0x5c
lea eax, [ebp - 0x120]
push 0x1001c4b8
push eax
call fcn.004669ea
pop ecx
lea eax, [ebp - 0x120]
pop ecx
push ebx
push eax
call dword [0x100170d0]
jmp 0x45cbf1
lea eax, [ebp - 0x120]
push eax
push 0x104
call dword [0x100170d4]
lea eax, [ebp - 0x120]
push eax
call fcn.00466936
cmp byte [ebp + eax - 0x121], 0x5c
pop ecx
je 0x45cbf1
lea eax, [ebp - 0x120]
push 0x1001c278
push eax
call fcn.004669ea
pop ecx
pop ecx
mov edi, dword [ebp + 8]
push 0x5c
lea eax, [edi + 8]
push eax
call dword [0x10017268]
pop ecx
cmp eax, ebx
pop ecx
je 0x45cc09
inc eax
jmp 0x45cc0c
lea eax, [edi + 8]
push eax
lea eax, [ebp - 0x120]
push eax
call fcn.004669ea
mov eax, dword [ebp - 4]
pop ecx
pop ecx
add eax, 0xf2e9
push eax
lea eax, [ebp - 0x120]
push eax
call fcn.00466aa0
pop ecx
test eax, eax
pop ecx
je 0x45cc4d
lea eax, [ebp - 0x120]
push eax
mov eax, dword [ebp - 4]
add eax, 0xf2e9
push eax
call fcn.004668f0
pop ecx
pop ecx
cmp dword [edi + 4], ebx
jne 0x45cc59
push 0x1001c250
jmp 0x45cc5e
push 0x1001dd70
lea eax, [ebp - 0x120]
push eax
call dword [0x10017230]
pop ecx
cmp eax, ebx
pop ecx
mov dword [ebp + 8], eax
push ebx
jne 0x45cc7b
push ebx
jmp 0x45cd82
push dword [edi + 4]
push dword [ebp + 8]
call dword [0x10017298]
push dword [ebp + 8]
mov eax, dword [ebp - 0x1c]
push dword [ebp - 8]
lea eax, [eax + esi + 0xf]
push 1
push eax
call dword [0x1001722c]
add esp, 0x1c
cmp eax, dword [ebp - 8]
je 0x45ccb9
mov ecx, dword [ebp - 4]
push ebx
push ebx
push edi
push ebx
call fcn.0045dc14
push dword [ebp + 8]
jmp 0x45d118
push dword [ebp + 8]
call dword [0x10017204]
mov eax, dword [ebp - 8]
add dword [edi + 4], eax
lea eax, [ebp - 0x120]
push eax
call fcn.00466936
pop ecx
pop ecx
xor ecx, ecx
cmp ecx, eax
lea ecx, [ebp - 0x120]
sbb eax, eax
and eax, ecx
push eax
push 1
push edi
push 1
mov ecx, dword [ebp - 4]
call fcn.0045dc14
jmp 0x45dbe9
lea eax, [esi + 0xf]
mov dword [ebp - 8], eax
add eax, 8
push eax
call fcn.00466936
movzx ecx, word [esi + 0xd]
add eax, 9
push 0x40
sub ecx, eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x14], ecx
xor ebx, ebx
pop ecx
xor eax, eax
lea edi, [ebp - 0x223]
mov byte [ebp - 0x224], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [ebp - 8]
mov dword [esp], 0x1001dd6c
add eax, 8
push eax
call dword [0x10017248]
pop ecx
mov dword [ebp - 0x10], eax
pop ecx
xor eax, eax
push 0x40
lea edi, [ebp - 0x11f]
pop ecx
mov byte [ebp - 0x120], bl
rep stosd dword es:[edi], eax
cmp dword [ebp - 0x10], ebx
mov byte [ebp + 0xb], bl
stosw word es:[edi], ax
stosb byte es:[edi], al
jne 0x45cd89
mov edi, dword [ebp - 8]
push 0x1001dd64
lea eax, [edi + 8]
push eax
mov dword [ebp - 0x10], eax
call dword [0x10017248]
pop ecx
test eax, eax
pop ecx
jne 0x45cd91
push ebx
push 1
push edi
push ebx
jmp 0x45ccea
inc dword [ebp - 0x10]
jmp 0x45cea6
mov eax, dword [0x1002227c]
cmp eax, 2
je 0x45cde5
cmp eax, 3
je 0x45cde5
lea eax, [ebp - 0x120]
push 0x104
push eax
call dword [0x100171b0]
lea eax, [ebp - 0x120]
push eax
call fcn.00466936
cmp byte [ebp + eax - 0x121], 0x5c
pop ecx
je 0x45cdde
lea eax, [ebp - 0x120]
push eax
call fcn.00466936
pop ecx
mov byte [ebp + eax - 0x120], 0x5c
push 0x1001c4b8
jmp 0x45ce26
push 1
lea eax, [ebp - 0x120]
push 0x23
push eax
push ebx
call dword [0x10017324]
lea eax, [ebp - 0x120]
push eax
call fcn.00466936
cmp byte [ebp + eax - 0x121], 0x5c
pop ecx
je 0x45ce21
lea eax, [ebp - 0x120]
push 0x1001c278
push eax
call fcn.004669ea
pop ecx
pop ecx
push 0x1001c4ac
lea eax, [ebp - 0x120]
push eax
call fcn.004669ea
pop ecx
lea eax, [ebp - 0x120]
pop ecx
push ebx
push eax
call dword [0x100170d0]
mov edi, dword [0x10017268]
push 0x5c
push dword [ebp - 0x10]
call edi
pop ecx
cmp eax, ebx
pop ecx
je 0x45ce59
inc eax
push eax
jmp 0x45ce5c
push dword [ebp - 0x10]
lea eax, [ebp - 0x120]
push eax
call fcn.004669ea
pop ecx
lea eax, [ebp - 0x120]
pop ecx
push 0x2e
push eax
call edi
mov edi, eax
lea eax, [ebp - 0x120]
push 0x1001dd5c
push eax
call dword [0x10017248]
add esp, 0x10
test eax, eax
je 0x45ce9d
push 0x1001dd54
push edi
call fcn.004668f0
pop ecx
pop ecx
lea eax, [ebp - 0x120]
mov dword [ebp - 0x10], eax
mov edi, dword [0x10017248]
push 0x1001dd50
push dword [ebp - 0x10]
call edi
pop ecx
cmp eax, ebx
pop ecx
mov dword [ebp - 0xc], eax
je 0x45ceec
lea eax, [ebp - 0x224]
push 0x1001f9c4
push eax
call fcn.004668f0
mov eax, dword [ebp - 0xc]
add eax, 3
push eax
lea eax, [ebp - 0x224]
push eax
call fcn.004669ea
add esp, 0x10
mov byte [ebp + 0xb], 1
jmp 0x45cf48
push 0x1001dd4c
push dword [ebp - 0x10]
call edi
pop ecx
test eax, eax
pop ecx
je 0x45cf37
push dword [0x1002227c]
lea eax, [ebp - 0x224]
mov byte [ebp - 0x224], bl
push eax
call fcn.0045a1ef
pop ecx
lea eax, [ebp - 0x120]
pop ecx
push ebx
push eax
call dword [0x100170d0]
lea eax, [ebp - 0x224]
push 0x1001cb30
push eax
call fcn.004669ea
jmp 0x45cf46
push dword [ebp - 0x10]
lea eax, [ebp - 0x224]
push eax
call fcn.004668f0
pop ecx
pop ecx
lea eax, [ebp - 0x18]
push 0xfde9
push eax
lea eax, [ebp - 0x224]
mov edi, 0x10020010
push eax
mov ecx, edi
mov dword [ebp - 0x18], ebx
call fcn.00459dac
lea eax, [ebp - 0x224]
mov ecx, edi
push eax
call fcn.004561be
test al, al
je 0x45cfb1
mov edi, dword [0x100172b0]
push 0x1001dd44
push dword [ebp - 0x18]
call edi
pop ecx
cmp eax, ebx
pop ecx
mov dword [ebp - 0xc], eax
jne 0x45cfc4
push 0x1001c274
call dword [0x10017150]
push 0x14
call dword [0x100170c4]
push 0x1001dd44
push dword [ebp - 0x18]
call edi
jmp 0x45cfbf
push 0x1001dd3c
push dword [ebp - 0x18]
call dword [0x100172b0]
pop ecx
mov dword [ebp - 0xc], eax
pop ecx
cmp dword [ebp - 0x18], ebx
je 0x45cfd5
push dword [ebp - 0x18]
call fcn.004668e4
pop ecx
mov dword [ebp - 0x18], ebx
cmp dword [ebp - 0xc], ebx
jne 0x45cfe4
push ebx
push ebx
push dword [ebp - 8]
jmp 0x45cd83
mov eax, dword [ebp - 4]
lea edi, [eax + 0xf2e9]
push edi
push dword [ebp - 0x10]
call fcn.00466aa0
pop ecx
test eax, eax
pop ecx
je 0x45d007
push dword [ebp - 0x10]
push edi
call fcn.004668f0
pop ecx
pop ecx
push 2
push ebx
push dword [ebp - 0xc]
call dword [0x10017298]
push dword [ebp - 0xc]
call dword [0x100172ac]
mov edi, dword [ebp - 8]
add esp, 0x10
mov ecx, dword [edi + 4]
sub eax, ecx
cmp eax, dword [ebp - 0x14]
jbe 0x45d0be
push ebx
push ecx
push dword [ebp - 0xc]
call dword [0x10017298]
push dword [ebp - 0x14]
call fcn.004668ea
add esp, 0x10
cmp eax, ebx
mov dword [ebp - 8], eax
je 0x45d0be
push dword [ebp - 0xc]
push dword [ebp - 0x14]
push 1
push eax
call dword [0x10017284]
mov eax, dword [ebp - 0x1c]
push dword [ebp - 0x14]
lea eax, [eax + esi + 0xf]
push eax
push dword [ebp - 8]
call fcn.00466a9a
add esp, 0x1c
test eax, eax
jne 0x45d08d
push dword [ebp - 0xc]
call dword [0x10017204]
pop ecx
mov ecx, dword [ebp - 4]
call fcn.0045fd8b
jmp 0x45dbe9
cmp dword [edi + 4], ebx
jne 0x45d0be
push dword [ebp - 0xc]
call dword [0x10017204]
lea eax, [ebp - 0x224]
mov dword [esp], 0x1001c250
push eax
call dword [0x10017230]
pop ecx
cmp eax, ebx
pop ecx
mov dword [ebp - 0xc], eax
jne 0x45d0be
push ebx
jmp 0x45cc75
push ebx
push dword [edi + 4]
push dword [ebp - 0xc]
call dword [0x10017298]
add esp, 0xc
cmp byte [ebp + 0xb], bl
je 0x45d0eb
xor ecx, ecx
cmp dword [ebp - 0x14], ebx
jle 0x45d0eb
mov eax, dword [ebp - 0x1c]
lea eax, [eax + esi + 0xf]
xor byte [eax + ecx], 0x4c
inc ecx
cmp ecx, dword [ebp - 0x14]
jl 0x45d0e1
push dword [ebp - 0xc]
mov eax, dword [ebp - 0x1c]
push dword [ebp - 0x14]
lea eax, [eax + esi + 0xf]
push 1
push eax
call dword [0x1001722c]
add esp, 0x10
cmp eax, dword [ebp - 0x14]
je 0x45d123
mov ecx, dword [ebp - 4]
push ebx
push ebx
push edi
push ebx
call fcn.0045dc14
push dword [ebp - 0xc]
call dword [0x10017204]
jmp 0x45dac1
push dword [ebp - 0xc]
call dword [0x10017204]
mov dword [esp], 0x1001c274
call dword [0x10017150]
mov eax, dword [ebp - 0x14]
push ebx
add dword [edi + 4], eax
push ebx
jmp 0x45cce7
push 0x40
xor ebx, ebx
pop ecx
xor eax, eax
lea edi, [ebp - 0x223]
mov byte [ebp - 0x224], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
add esi, 0xf
lea eax, [ebp - 0x224]
push esi
push eax
call fcn.004668f0
pop ecx
lea eax, [ebp - 0x224]
pop ecx
push ebx
push eax
mov ecx, 0x1001f8c0
call fcn.0045520e
test eax, eax
setne al
push esi
mov byte [ebp + 8], al
push dword [ebp + 8]
push 3
jmp 0x45dad1
sub eax, 0x1005
je 0x45d295
dec eax
je 0x45d1ec
dec eax
je 0x45d1c3
dec eax
dec eax
jne 0x45dbe9
mov ecx, 0x10020010
call fcn.004591e3
push 0
push 1
push 5
jmp 0x45d2fa
push edi
mov ecx, 0x10020010
call fcn.00459182
test al, al
jne 0x45dbe9
push 0xffffffffffffffff
push 0x1001cb40
mov ecx, 0x1001f8c0
call fcn.00455452
jmp 0x45dbe9
mov eax, dword [esi + 0xf]
xor ebx, ebx
cmp eax, ebx
jle 0x45d20a
push eax
push 0x1001c32c
mov ecx, 0x1001f8c0
mov dword [0x1001fedc], eax
call fcn.00455452
mov eax, dword [esi + 0x13]
cmp eax, ebx
jle 0x45d226
push eax
push 0x1001c560
mov ecx, 0x1001f8c0
mov dword [0x1001fee0], eax
call fcn.00455452
mov al, byte [esi + 0x17]
cmp al, bl
jle 0x45d245
mov byte [0x1001fee4], al
mov ecx, 0x1001f8c0
movsx eax, al
push eax
push 0x1001c558
call fcn.00455452
mov al, byte [esi + 0x19]
cmp al, 1
jne 0x45d253
mov byte [0x1001ff07], al
jmp 0x45d25d
cmp al, bl
jne 0x45d271
mov byte [0x1001ff07], bl
movsx eax, byte [esi + 0x19]
push eax
push 0x1001c550
mov ecx, 0x1001f8c0
call fcn.00455452
movsx esi, byte [esi + 0x18]
push ebx
push 1
push 1
mov ecx, edi
call fcn.0045ddec
cmp esi, 1
jne 0x45dbe9
push esi
push 0x1001c818
jmp 0x45d1dd
push 0
push 2
jmp 0x45dbde
xor ebx, ebx
mov ecx, edi
mov byte [edi + 0xf2dc], 1
mov dword [edi + 0xf2e0], ebx
call fcn.0045fe02
cmp byte [edi + 0xf2e8], bl
lea esi, [edi + 0xf2e8]
je 0x45d2d0
mov ecx, edi
call fcn.0045e400
mov byte [esi], bl
jmp 0x45dbe9
mov byte [esi], 1
jmp 0x45dbe9
add eax, 0xffffeff5
cmp eax, 8
ja 0x45dbe9
jmp dword [eax*4 + 0x1000d710]
mov ecx, edi
jmp 0x45dad4
pop ecx
jmp 0x45dbe9
mov ecx, dword [ebp - 4]
call fcn.0045ddec
jmp 0x45dbe9
add esi, 0xf
push esi
mov ecx, edi
call fcn.0045f5b6
pop edi
pop esi
pop ebx
leave
ret 4