Function at 0x10034b10
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x102987f0
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x78
mov dword [ebp - 0x20], edx
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
test edx, edx
je 0x100353cf
cmp dword [ebp + 8], 0
je 0x100353cf
mov ebx, dword [ebp + 0x14]
test ebx, ebx
je 0x100353cf
mov dword [ebp - 4], 0
mov esi, 0x10
mov eax, dword [edx]
mov dword [ebp - 0x30], eax
mov ebx, dword [ebx + 8]
mov edx, dword [eax]
lea edi, [eax + 0x130]
mov dword [ebp - 0x38], edx
mov eax, esi
mov edx, edi
mov ecx, edx
and ecx, 0xf
sub eax, ecx
neg ecx
sbb ecx, ecx
and ecx, eax
mov eax, dword [edx + ecx + 0xc]
mov ecx, edx
mov dword [ebp - 0x28], eax
and ecx, 0xf
mov eax, esi
sub eax, ecx
neg ecx
sbb ecx, ecx
and ecx, eax
mov eax, dword [edx + ecx + 0x10]
mov dword [ebp - 0x2c], eax
mov eax, edi
and eax, 0xf
sub esi, eax
neg eax
sbb eax, eax
and eax, esi
movzx edx, word [edi + eax + 0x16]
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x3c], edx
cmp eax, 1
jne 0x10034c99
cmp edx, 0x18
jne 0x10034bc9
lea eax, [edx - 0x15]
jmp 0x10034bdc
cmp edx, 0x20
mov eax, 1
mov ecx, 4
cmove eax, ecx
movzx eax, ax
movzx ecx, ax
mov dword [ebp - 0x1c], eax
movzx eax, dx
xor edx, edx
div ecx
mov edi, dword [ebp - 0x20]
mov ecx, edi
movzx eax, ax
mov dword [ebp - 0x24], eax
call fcn.10031d90
movzx esi, ax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x18], esi
cmp ax, 8
jne 0x10034c29
push edi
call sym.FreeImage.dll__FreeImage_IsTransparent_4
test eax, eax
je 0x10034dbd
mov dword [ebp - 0x1c], 2
mov dword [ebp - 0x24], 8
jmp 0x10034dbd
cmp ax, 0x20
jne 0x10034dbd
mov eax, dword [ebp - 0x30]
test byte [eax + 0x110], 1
jne 0x10034c6d
test byte [ebp + 0x10], 1
jne 0x10034c6d
cmp esi, 2
jne 0x10034dbd
mov eax, esi
mov word [ebp - 0x14], ax
lea eax, [ebp - 0x14]
push eax
push 1
push 0x152
push ebx
call fcn.1017ef60
add esp, 0x10
jmp 0x10034dbd
push 1
push 0x14c
push ebx
mov dword [ebp - 0x18], 5
call fcn.1017ef60
add esp, 0xc
push 4
push 0x14e
push ebx
call fcn.1017ef60
add esp, 0xc
jmp 0x10034dbd
cmp eax, 9
jne 0x10034cc3
movzx ecx, dx
mov eax, 0xaaaaaaab
mul ecx
mov dword [ebp - 0x1c], 3
shr edx, 1
movzx esi, dx
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x18], 2
jmp 0x10034dba
cmp eax, 0xa
jne 0x10034d40
mov ax, dx
mov dword [ebp - 0x1c], 4
shr ax, 2
movzx esi, ax
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x24], esi
test byte [eax + 0x110], 1
jne 0x10034d17
test byte [ebp + 0x10], 1
jne 0x10034d17
mov eax, 2
mov dword [ebp - 0x18], 2
mov word [ebp - 0x14], ax
lea eax, [ebp - 0x14]
push eax
push 1
push 0x152
push ebx
call fcn.1017ef60
add esp, 0x10
jmp 0x10034dba
push 1
push 0x14c
push ebx
mov dword [ebp - 0x18], 5
call fcn.1017ef60
add esp, 0xc
push 4
push 0x14e
push ebx
call fcn.1017ef60
add esp, 0xc
jmp 0x10034dba
cmp eax, 0xb
jne 0x10034d84
movzx ecx, dx
mov eax, 0xaaaaaaab
mul ecx
mov dword [ebp - 0x1c], 3
shr edx, 1
test dword [ebp + 0x10], 0x10000
movzx esi, dx
mov dword [ebp - 0x24], esi
je 0x10034cb7
push 0
push 0x10018
push ebx
mov dword [ebp - 0x18], 0x804d
call fcn.1017ef60
add esp, 0xc
jmp 0x10034dba
cmp eax, 0xc
jne 0x10034da6
mov ax, dx
mov dword [ebp - 0x1c], 4
shr ax, 2
movzx esi, ax
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x18], 2
jmp 0x10034dba
movzx eax, dx
mov dword [ebp - 0x1c], 1
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x18], 1
mov edi, dword [ebp - 0x20]
mov edx, dword [ebp - 0x38]
mov ecx, ebx
call fcn.10032660
mov eax, dword [ebp - 0x30]
mov ecx, dword [eax + 0x114]
test ecx, ecx
je 0x10034dee
mov eax, dword [eax + 0x118]
test eax, eax
je 0x10034dee
push eax
push ecx
push 0x8773
push ebx
call fcn.1017ef60
add esp, 0x10
push dword [ebp - 0x28]
push 0x100
push ebx
call fcn.1017ef60
mov esi, dword [ebp - 0x2c]
add esp, 0xc
push esi
push 0x101
push ebx
call fcn.1017ef60
mov eax, dword [ebp - 0x1c]
add esp, 0xc
movzx eax, ax
push eax
push 0x115
push ebx
call fcn.1017ef60
mov eax, dword [ebp - 0x24]
add esp, 0xc
movzx eax, ax
push eax
push 0x102
push ebx
call fcn.1017ef60
mov eax, dword [ebp - 0x18]
add esp, 0xc
movzx eax, ax
push eax
push 0x106
push ebx
call fcn.1017ef60
add esp, 0xc
push 1
push 0x11c
push ebx
call fcn.1017ef60
add esp, 0xc
push 1
push 0x112
push ebx
call fcn.1017ef60
add esp, 0xc
push 1
push 0x10a
push ebx
call fcn.1017ef60
add esp, 0xc
push 0xffffffffffffffff
push ebx
call fcn.101862b0
push eax
push 0x116
push ebx
call fcn.1017ef60
add esp, 0x14
mov edx, edi
mov ecx, ebx
call fcn.10031f50
mov eax, dword [ebp + 0xc]
test eax, eax
js 0x10034ef1
push eax
lea eax, [ebp - 0x80]
push str.Page__d
push eax
call fcn.10007a60
add esp, 0xc
push 2
push 0xfe
push ebx
call fcn.1017ef60
mov eax, dword [ebp + 0xc]
add esp, 0xc
movzx eax, ax
push 0
push eax
push 0x129
push ebx
call fcn.1017ef60
lea eax, [ebp - 0x80]
push eax
push 0x11d
push ebx
call fcn.1017ef60
add esp, 0x1c
jmp 0x10034f08
xor eax, eax
cmp dword [ebp + 0x18], eax
setne al
push eax
push 0xfe
push ebx
call fcn.1017ef60
add esp, 0xc
mov eax, dword [ebp - 0x18]
cmp ax, 3
jne 0x10035008
push edi
call sym.FreeImage.dll__FreeImage_GetColorsUsed_4
push edi
movzx esi, ax
call sym.FreeImage.dll__FreeImage_GetPalette_4
lea ecx, [esi + esi*2]
mov dword [ebp - 0x34], eax
add ecx, ecx
push ecx
call fcn.10271b4d
mov ecx, eax
add esp, 4
mov dword [ebp - 0x4c], ecx
test ecx, ecx
jne 0x10034f53
push 0x10410b74
lea eax, [ebp - 0x54]
mov dword [ebp - 0x54], str.Memory_allocation_failed
push eax
call fcn.1026eb3b
lea eax, [ecx + esi*2]
lea edx, [eax + esi*2]
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x44], edx
lea edx, [esi - 1]
test edx, edx
js 0x10034fe4
mov edi, dword [ebp - 0x44]
lea esi, [eax + edx*2]
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x40]
sub dword [ebp - 0x30], ecx
lea eax, [eax + edx*4]
mov dword [ebp - 0x34], edi
mov edi, dword [ebp - 0x20]
inc eax
sub dword [ebp - 0x34], ecx
mov dword [ebp - 0x14], eax
nop dword [eax]
movzx ecx, byte [eax + 1]
lea esi, [esi - 2]
mov eax, 0x101
imul ecx, eax
mov eax, dword [ebp - 0x30]
mov word [eax + esi + 2], cx
mov eax, dword [ebp - 0x14]
movzx ecx, byte [eax]
mov eax, 0x101
imul ecx, eax
mov eax, dword [ebp - 0x14]
mov word [esi + 2], cx
movzx ecx, byte [eax - 1]
mov eax, 0x101
imul ecx, eax
mov eax, dword [ebp - 0x34]
mov word [eax + esi + 2], cx
mov eax, dword [ebp - 0x14]
sub eax, 4
sub edx, 1
mov dword [ebp - 0x14], eax
jns 0x10034f90
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x40]
push dword [ebp - 0x44]
push eax
push ecx
push 0x140
push ebx
call fcn.1017ef60
add esp, 0x14
push dword [ebp - 0x4c]
call fcn.102718ed
mov esi, dword [ebp - 0x2c]
add esp, 4
mov eax, dword [ebp - 0x18]
push dword [ebp + 0x10]
mov edx, dword [ebp - 0x24]
mov ecx, ebx
push eax
push dword [ebp - 0x1c]
call fcn.100326e0
add esp, 0xc
mov edx, edi
mov ecx, ebx
call fcn.10032c70
cmp dword [ebp + 0x18], 0
jne 0x1003504d
cmp dword [ebp + 0x1c], 1
jbe 0x1003504d
lea eax, [ebp - 0x50]
xorps xmm0, xmm0
push eax
push 1
push 0x14a
push ebx
movlpd qword [ebp - 0x50], xmm0
call fcn.1017ef60
add esp, 0x10
mov edx, dword [edi]
cmp dword [edx + 0x128], 0
je 0x10035060
mov edx, dword [edx + 0x12c]
jmp 0x1003506c
push edi
call sym.FreeImage.dll__FreeImage_GetLine_4
lea edx, [eax + 3]
and edx, 0xfffffffc
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x24], edx
cmp eax, 1
jne 0x1003527e
mov eax, dword [ebp - 0x3c]
movzx ecx, ax
dec ecx
cmp ecx, 0x1f
ja case.0x10035092.2
movzx eax, byte [ecx + 0x100353f0]
jmp dword [eax*4 + 0x100353e4]
cmp word [ebp - 0x3c], 8
jne 0x10035152
push edi
call sym.FreeImage.dll__FreeImage_IsTransparent_4
test eax, eax
je 0x10035152
push edi
call sym.FreeImage.dll__FreeImage_GetTransparencyTable_4
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x28]
lea ecx, [eax + eax]
push ecx
call fcn.10271b4d
add esp, 4
mov dword [ebp - 0x3c], eax
test eax, eax
jne 0x100350e6
push 0x10410b74
lea eax, [ebp - 0x58]
mov dword [ebp - 0x58], str.Memory_allocation_failed
push eax
call fcn.1026eb3b
add esi, 0xffffffff
mov dword [ebp - 0x4c], esi
js 0x1003537e
push esi
push edi
call sym.FreeImage.dll__FreeImage_GetScanLine_8
mov edx, dword [ebp - 0x3c]
mov esi, eax
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x1003512a
mov edi, eax
mov cl, byte [esi]
lea esi, [esi + 1]
mov byte [edx], cl
movzx eax, cl
mov ecx, dword [ebp - 0x44]
mov al, byte [eax + ecx]
mov ecx, dword [ebp - 0x1c]
mov byte [edx + 1], al
movzx eax, cx
add edx, eax
sub edi, 1
jne 0x10035107
mov edi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x4c]
sub eax, esi
push 0
dec eax
push eax
push dword [ebp - 0x3c]
push ebx
call fcn.10184f50
add esp, 0x10
sub esi, 1
mov dword [ebp - 0x4c], esi
jns 0x100350f2
mov eax, dword [ebp - 0x3c]
jmp 0x1003537e
push dword [ebp - 0x24]
call fcn.10271b4d
add esp, 4
mov dword [ebp - 0x38], eax
test eax, eax
jne 0x10035179
push 0x10410b74
lea eax, [ebp - 0x5c]
mov dword [ebp - 0x5c], str.Memory_allocation_failed
push eax
call fcn.1026eb3b
mov dword [ebp - 0x3c], 0
test esi, esi
je 0x1003537e
lea ecx, [esi - 1]
mov dword [ebp - 0x4c], ecx
nop
push dword [ebp - 0x24]
push ecx
push edi
call sym.FreeImage.dll__FreeImage_GetScanLine_8
push eax
push dword [ebp - 0x38]
call fcn.1026e3e0
add esp, 0xc
push 0
push dword [ebp - 0x3c]
push dword [ebp - 0x38]
push ebx
call fcn.10184f50
mov eax, dword [ebp - 0x3c]
add esp, 0x10
mov ecx, dword [ebp - 0x4c]
inc eax
dec ecx
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x4c], ecx
cmp eax, esi
jb 0x10035190
jmp 0x1003537b
push edx
call fcn.10271b4d
add esp, 4
mov dword [ebp - 0x20], eax
test eax, eax
jne 0x100351f3
push 0x10410b74
lea eax, [ebp - 0x60]
mov dword [ebp - 0x60], str.Memory_allocation_failed
push eax
call fcn.1026eb3b
mov dword [ebp - 0x3c], 0
test esi, esi
je 0x1003537e
lea ecx, [esi - 1]
mov dword [ebp - 0x4c], ecx
push dword [ebp - 0x24]
push ecx
push edi
call sym.FreeImage.dll__FreeImage_GetScanLine_8
push eax
push dword [ebp - 0x20]
call fcn.1026e3e0
add esp, 0xc
cmp word [ebp - 0x18], 5
je 0x10035253
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x20]
test ecx, ecx
je 0x10035253
mov edx, ecx
movzx ecx, byte [eax + 2]
xor byte [eax], cl
movzx ecx, byte [eax]
xor byte [eax + 2], cl
movzx ecx, byte [eax + 2]
xor byte [eax], cl
mov esi, dword [ebp - 0x1c]
movzx ecx, si
mov esi, dword [ebp - 0x2c]
add eax, ecx
sub edx, 1
jne 0x10035231
push 0
push dword [ebp - 0x3c]
push dword [ebp - 0x20]
push ebx
call fcn.10184f50
mov eax, dword [ebp - 0x3c]
add esp, 0x10
mov ecx, dword [ebp - 0x4c]
inc eax
dec ecx
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x4c], ecx
cmp eax, esi
jb 0x10035208
mov eax, dword [ebp - 0x20]
jmp 0x1003537e
cmp eax, 0xb
jne 0x1003530c
test dword [ebp + 0x10], 0x10000
je 0x1003530c
push edx
call fcn.10271b4d
add esp, 4
mov dword [ebp - 0x38], eax
test eax, eax
jne 0x100352b5
push 0x10410b74
lea eax, [ebp - 0x64]
mov dword [ebp - 0x64], str.Memory_allocation_failed
push eax
call fcn.1026eb3b
mov dword [ebp - 0x3c], 0
test esi, esi
je 0x1003537e
lea ecx, [esi - 1]
mov dword [ebp - 0x4c], ecx
nop word [eax + eax]
push dword [ebp - 0x28]
push ecx
push edi
call sym.FreeImage.dll__FreeImage_GetScanLine_8
mov ecx, dword [ebp - 0x38]
mov edx, eax
call fcn.1003e410
add esp, 4
push 0
push dword [ebp - 0x3c]
push dword [ebp - 0x38]
push ebx
call fcn.10184f50
mov eax, dword [ebp - 0x3c]
add esp, 0x10
mov ecx, dword [ebp - 0x4c]
inc eax
dec ecx
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x4c], ecx
cmp eax, esi
jb 0x100352d0
jmp 0x1003537b
push edx
call fcn.10271b4d
add esp, 4
mov dword [ebp - 0x38], eax
test eax, eax
jne 0x10035331
push 0x10410b74
lea eax, [ebp - 0x68]
mov dword [ebp - 0x68], str.Memory_allocation_failed
push eax
call fcn.1026eb3b
mov dword [ebp - 0x3c], 0
test esi, esi
je 0x1003537e
lea ecx, [esi - 1]
mov dword [ebp - 0x4c], ecx
push dword [ebp - 0x24]
push ecx
push edi
call sym.FreeImage.dll__FreeImage_GetScanLine_8
push eax
push dword [ebp - 0x38]
call fcn.1026e3e0
add esp, 0xc
push 0
push dword [ebp - 0x3c]
push dword [ebp - 0x38]
push ebx
call fcn.10184f50
mov eax, dword [ebp - 0x3c]
add esp, 0x10
mov ecx, dword [ebp - 0x4c]
inc eax
dec ecx
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x4c], ecx
cmp eax, esi
jb 0x10035342
mov eax, dword [ebp - 0x38]
push eax
call fcn.102718ed
add esp, 4
cmp dword [ebp + 0xc], 0
jge 0x10035399
cmp dword [ebp + 0x18], 0
jne 0x100353a2
cmp dword [ebp + 0x1c], 1
jbe 0x100353a2
push ebx
call fcn.10181440
add esp, 4
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0xc]
xor eax, eax
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret