Function at 0x45ce38
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffeb4
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x138], ebx
mov dword [ebp - 0x13c], ebx
mov dword [ebp - 4], edx
mov esi, eax
xor eax, eax
push ebp
push 0x45d261
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov al, byte [esi + 0x758]
imul eax, eax, 0xe
lea eax, [esi + eax*8 + 0x4d8]
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 0x370]
mov edx, dword [eax]
call dword [edx + 0xc4]
test al, al
je 0x45cec5
mov eax, dword [esi + 0x708]
call fcn.004242fc
xor ecx, ecx
xor edx, edx
call fcn.0041ff10
mov ebx, eax
mov eax, ebx
and al, 0xff
mov byte [esi + 0x8cb], al
mov eax, ebx
shr eax, 8
and al, 0xff
mov byte [esi + 0x8ca], al
shr ebx, 0x10
and bl, 0xff
mov byte [esi + 0x8c9], bl
mov edi, dword [ebp - 4]
dec edi
test edi, edi
jl 0x45cf31
inc edi
xor ebx, ebx
lea edx, [ebp - 0x13c]
lea eax, [ebx + 1]
call fcn.004089c0
mov ecx, dword [ebp - 0x13c]
lea eax, [ebp - 0x138]
mov edx, 0x45d278
call fcn.004048c8
mov edx, dword [ebp - 0x138]
mov eax, dword [esi + 0x2fc]
call fcn.0043b0d0
mov eax, dword [esi + 0x2fc]
mov edx, dword [eax]
call dword [edx + 0x88]
mov eax, dword [esi + 0x394]
mov cl, byte [eax + 0x38]
xor cl, 1
mov edx, dword [esi + ebx*4 + 0x708]
mov eax, esi
call fcn.0045cb70
inc ebx
dec edi
jne 0x45ced0
mov edx, 0x45d294
mov eax, dword [esi + 0x2fc]
call fcn.0043b0d0
mov eax, dword [esi + 0x2fc]
mov edx, dword [eax]
call dword [edx + 0x88]
mov eax, dword [ebp - 0x18]
mov word [eax], 0
mov dword [ebp - 0xc], 0x7d00
mov dword [ebp - 0x10], 0x7d00
mov edi, dword [ebp - 4]
dec edi
test edi, edi
jl 0x45d00b
inc edi
xor ebx, ebx
lea eax, [ebp - 0x134]
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x94]
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0xe4]
mov dword [ebp - 0x24], eax
lea ecx, [ebp - 0x44]
mov edx, dword [esi + ebx*4 + 0x708]
mov eax, esi
call fcn.0045cd90
mov al, byte [ebp - 0x3c]
sub al, byte [ebp - 0x44]
mov edx, dword [ebp - 0x18]
mov byte [edx + ebx + 0x2c], al
mov edx, dword [ebp - 0x18]
and eax, 0xff
mov edx, dword [ebp - 0x18]
cmp ax, word [edx]
jle 0x45cfcb
mov eax, dword [ebp - 0x18]
movzx eax, byte [eax + ebx + 0x2c]
mov edx, dword [ebp - 0x18]
mov word [edx], ax
mov eax, dword [ebp - 0x38]
sub eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x1c]
mov dword [edx], eax
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x44]
mov dword [eax], edx
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x40]
mov dword [edx], eax
mov edx, dword [ebp - 0x20]
mov edx, dword [edx]
cmp edx, dword [ebp - 0xc]
jge 0x45cff3
mov dword [ebp - 0xc], edx
cmp eax, dword [ebp - 0x10]
jge 0x45cffb
mov dword [ebp - 0x10], eax
inc ebx
add dword [ebp - 0x24], 4
add dword [ebp - 0x20], 4
add dword [ebp - 0x1c], 4
dec edi
jne 0x45cf8f
xor eax, eax
mov dword [ebp - 8], eax
mov edi, dword [ebp - 4]
dec edi
test edi, edi
jl 0x45d039
inc edi
xor ebx, ebx
lea eax, [ebp - 0x134]
mov edx, dword [eax]
add dword [ebp - 8], edx
mov edx, dword [ebp - 0x18]
mov cx, word [ebp - 8]
mov word [edx + ebx*2 + 4], cx
inc ebx
add eax, 4
dec edi
jne 0x45d021
mov edx, 0x45d2b8
mov eax, dword [esi + 0x2fc]
call fcn.0043b0d0
mov eax, dword [esi + 0x2fc]
mov edx, dword [eax]
call dword [edx + 0x88]
xor eax, eax
mov al, byte [esi + 0x758]
imul eax, eax, 0xe
lea ebx, [esi + eax*8 + 0x4d8]
mov eax, dword [ebx + 0x68]
mov dl, 6
call fcn.004252ac
mov eax, dword [ebx + 0x68]
mov edx, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x34]
mov eax, dword [ebp - 0x18]
movsx edx, word [eax]
mov eax, dword [ebx + 0x68]
mov ecx, dword [eax]
call dword [ecx + 0x40]
xor eax, eax
mov al, byte [esi + 0x758]
imul eax, eax, 0xe
mov ebx, dword [esi + eax*8 + 0x540]
mov eax, ebx
call fcn.004242fc
mov eax, dword [eax + 0x14]
mov edx, 0xff00ff
call fcn.0041f784
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x20]
push eax
lea eax, [ebp - 0x14c]
push eax
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x2c]
mov ecx, eax
xor edx, edx
xor eax, eax
call fcn.00412cd0
lea eax, [ebp - 0x14c]
push eax
mov eax, ebx
call fcn.004242fc
pop edx
call fcn.0041fb28
mov edi, dword [ebp - 4]
dec edi
test edi, edi
jl 0x45d18f
inc edi
xor ebx, ebx
lea eax, [ebp - 0x134]
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x94]
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0xe4]
mov dword [ebp - 0x30], eax
test ebx, ebx
jne 0x45d11c
xor eax, eax
mov dword [ebp - 0x14], eax
jmp 0x45d127
mov eax, dword [ebp - 0x18]
movsx eax, word [eax + ebx*2 + 2]
mov dword [ebp - 0x14], eax
push 0xcc0020
mov eax, dword [ebp - 0x30]
mov eax, dword [eax]
push eax
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax]
push eax
mov eax, dword [esi + ebx*4 + 0x708]
call fcn.004242fc
call fcn.0041ff84
push eax
mov eax, dword [ebp - 0x28]
mov eax, dword [eax]
push eax
mov eax, dword [ebp - 0x18]
movsx eax, word [eax]
push eax
mov eax, dword [ebp - 0x14]
push eax
push 0
xor eax, eax
mov al, byte [esi + 0x758]
imul eax, eax, 0xe
mov eax, dword [esi + eax*8 + 0x540]
call fcn.004242fc
call fcn.0041ff84
push eax
call sub.gdi32.dll_BitBlt
inc ebx
add dword [ebp - 0x30], 4
add dword [ebp - 0x2c], 4
add dword [ebp - 0x28], 4
dec edi
jne 0x45d111
mov edi, dword [ebp - 4]
dec edi
test edi, edi
jl 0x45d1cf
inc edi
xor ebx, ebx
lea eax, [ebp - 0x94]
lea edx, [ebp - 0xe4]
mov dword [ebp - 0x34], edx
mov dl, byte [eax]
sub dl, byte [ebp - 0xc]
mov ecx, dword [ebp - 0x18]
mov byte [ecx + ebx + 0x40], dl
mov edx, dword [ebp - 0x34]
mov dl, byte [edx]
sub dl, byte [ebp - 0x10]
mov ecx, dword [ebp - 0x18]
mov byte [ecx + ebx + 0x54], dl
inc ebx
add dword [ebp - 0x34], 4
add eax, 4
dec edi
jne 0x45d1a9
mov al, byte [ebp - 4]
xor edx, edx
mov dl, byte [esi + 0x758]
imul edx, edx, 0xe
mov byte [esi + edx*8 + 0x546], al
xor eax, eax
mov al, byte [esi + 0x758]
imul eax, eax, 0xe
xor edx, edx
mov dl, byte [esi + eax*8 + 0x546]
dec edx
mov eax, dword [esi + 0x344]
call fcn.00430c18
xor eax, eax
mov al, byte [esi + 0x758]
imul eax, eax, 0xe
mov byte [esi + eax*8 + 0x545], 0
xor eax, eax
mov al, byte [esi + 0x758]
imul eax, eax, 0xe
mov byte [esi + eax*8 + 0x544], 1
xor eax, eax
mov al, byte [esi + 0x758]
imul eax, eax, 0xe
mov dl, byte [esi + eax*8 + 0x545]
mov eax, esi
call fcn.0045dad0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x45d268
lea eax, [ebp - 0x13c]
mov edx, 2
call fcn.004045e8
ret