Function at 0x10045877
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x1007787e
call fcn.100764a8
sub esp, 0x98
mov dword [ebp - 0x18], 0xa6318529
mov dword [ebp - 0x18], 0x39beb064
mov dword [ebp - 0x18], 0xe1265ab3
push ebx
mov dword [ebp - 0x18], 0xfffffffd
xor ebx, ebx
push esi
inc ebx
xor esi, esi
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x18], 0x55595070
mov dword [ebp - 0x18], 0x9edbda7f
push edi
mov dword [ebp - 0x18], 0xfffffffc
mov edi, ecx
mov dword [ebp - 0x48], 0x67ee39f3
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x14], esi
jmp 0x100458eb
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0xa0], 0x418a5273
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x100458da
push 0x17f7
lea eax, [ebp - 0x48]
push eax
push esi
call fcn.1004619a
add esp, 0xc
cmp dword [edi], esi
je 0x10045ca3
push dword [edi]
push esi
push dword [edi + 4]
call fcn.10020bec
mov dword [ebp - 0x14], 0xd6c05baf
add esp, 0xc
mov dword [ebp - 0x14], 0xfffffff9
cmp dword [ebp - 0x14], 0xfffffff5
je 0x100459a1
push ebx
lea ecx, [ebp - 0x7c]
call fcn.100214a3
push 0x7723
push 0x7584
push 0x2079
lea eax, [ebp - 0x88]
mov dword [ebp - 4], esi
push eax
push 0x122
push 0x175f
push esi
lea eax, [ebp - 0x7c]
mov dword [ebp - 0x58], esi
push 0x671
push eax
call fcn.10046e2f
add esp, 0x24
lea eax, [ebp - 0x7c]
push esi
push eax
push 0x74ba
lea eax, [ebp - 0x58]
push 0x36ea
push eax
call fcn.10045ebc
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x7c]
add esp, 0x14
call fcn.10021525
dec dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0xfffffff5
jne 0x1004592d
mov edi, dword [ebp - 0x3c]
push 0x935
push edi
push esi
call fcn.1004697c
add esp, 0xc
mov dword [ebp - 0x1c], esi
lea ecx, [ebp - 0x54]
push 4
call fcn.100214a3
push 0x336e
push 0x678d
lea eax, [ebp - 0x20]
mov dword [ebp - 4], ebx
push eax
lea eax, [ebp - 0x54]
mov dword [ebp - 0x24], 8
push eax
push 0x57b3
push esi
call fcn.1004660f
add esp, 0x18
mov dword [ebp - 0x20], esi
jmp 0x100459fd
mov eax, dword [ebp - 0x20]
mov dword [ebp + eax*4 - 0x98], 9
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 3
jl 0x100459ec
mov dword [ebp - 0x1c], 0xfffffff7
jmp 0x10045a75
push 2
lea ecx, [ebp - 0x64]
call fcn.100214a3
lea eax, [ebp - 0x64]
mov byte [ebp - 4], 2
push eax
push 0x5660
push 0x5504
push esi
lea eax, [ebp - 0x8c]
push eax
push 0x4b1e
call fcn.10045cb4
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x64]
push eax
push 0x1867
push esi
call fcn.10047c08
push esi
push 0x5838
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x64]
push eax
call fcn.10045fb1
add esp, 0x3c
mov byte [ebp - 4], bl
lea ecx, [ebp - 0x64]
call fcn.10021525
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 4
jl 0x10045a0c
mov eax, dword [ebp - 0x1c]
xor ebx, ebx
cmp eax, 0xabc2
mov eax, dword [ebp - 0x54]
setle bl
xor edx, edx
mov dword [ebp - 0x98], ebx
cmp dword [eax], esi
mov eax, dword [ebp - 0x24]
sete dl
xor ecx, ecx
cmp eax, edx
setne cl
sub ecx, ebx
je 0x10045ab2
cmp dword [ebp - 0x1c], esi
je 0x10045ab2
xor ebx, ebx
inc ebx
mov eax, ebx
jmp 0x10045ab7
xor ebx, ebx
mov eax, esi
inc ebx
mov ecx, dword [ebp - 0x54]
xor edx, edx
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ecx + 4]
setl dl
neg edx
jne 0x10045ad3
mov ecx, esi
cmp dword [ebp - 0x24], esi
je 0x10045ad5
mov ecx, ebx
xor eax, eax
cmp ecx, 0x2c39
lea ecx, [ebp - 0x54]
setg al
imul eax, dword [ebp - 0x24]
mov dword [ebp - 0x24], eax
or dword [ebp - 4], 0xffffffff
call fcn.10021525
mov dword [edi + 4], esi
lea ecx, [ebp - 0x70]
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x30], 0x2758e92e
mov dword [ebp - 0x2c], ebx
push ebx
call fcn.100214a3
mov dword [ebp - 4], 3
mov dword [ebp - 0x38], 0xaafa
mov dword [ebp - 0x40], 0x5543
cmp dword [ebp - 0x40], 0x55b7
jle 0x10045b82
mov eax, esi
mov dword [ebp - 0x28], esi
mov ebx, eax
mov dword [ebp - 0x44], 0x714
mov edi, esi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], 0x2dbd
mov eax, ebx
mov ecx, 0x1061e7b8
xor eax, esi
cdq
push edx
push eax
call fcn.10021267
add esi, edi
dec dword [ebp - 0x14]
jne 0x10045b44
inc edi
push 0
pop esi
cmp edi, 0xa96
jl 0x10045b3a
dec ebx
dec dword [ebp - 0x44]
jne 0x10045b38
mov eax, dword [ebp - 0x28]
inc eax
mov dword [ebp - 0x28], eax
cmp eax, 0x786a
jl 0x10045b2f
mov edi, dword [ebp - 0x3c]
xor ebx, ebx
inc ebx
mov dword [ebp - 0x28], 0x9236f914
mov byte [ebp - 4], 4
cmp dword [ebp - 0x40], 0x5440
jge 0x10045bc9
mov edx, 0x100089a8
mov ecx, 0x1061e7b8
call fcn.100255e3
jmp 0x10045bc9
mov dword [ebp - 4], 3
mov dword [ebp - 0x18], 0x919139f4
mov dword [ebp - 0x14], esi
jmp 0x10045be8
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x70]
mov dword [eax + ecx*4], esi
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], ebx
jl 0x10045bdc
mov dword [ebp - 0x14], esi
jmp 0x10045bff
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x84], esi
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x10045bf2
push esi
push 0x451f
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x34]
push eax
call fcn.1004785e
add esp, 0x14
cmp dword [ebp - 0x30], esi
je 0x10045c4c
cmp dword [ebp - 0x34], esi
je 0x10045c4c
mov eax, dword [ebp - 0x34]
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x30]
dec ecx
neg ecx
sbb ecx, ecx
inc ecx
imul eax, ecx
mov dword [ebp - 0x2c], eax
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x70]
mov dword [eax], ecx
mov eax, dword [ebp - 0x30]
mov eax, dword [ebp - 0x38]
or ecx, 0xffffffff
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x28]
cmp ecx, eax
mov eax, dword [ebp - 0x38]
sbb ecx, ecx
xor edx, edx
neg ecx
cmp ecx, eax
mov eax, dword [ebp - 0x18]
setge dl
xor ebx, ebx
cmp edx, 0x32a5
setne bl
xor ecx, ecx
cmp ebx, eax
setne cl
mov dword [ebp - 0x80], ecx
lea ecx, [ebp - 0x70]
or dword [ebp - 4], 0xffffffff
call fcn.10021525
push 0x5e4d
push esi
push edi
push 0x744c
call fcn.10045edf
add esp, 0x10
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret