Function at 0x525ae0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov esi, dword [esp + 0x34]
mov eax, dword [esi + 0x184]
mov ecx, dword [esi + 0x2c0]
test ecx, ecx
je 0x525b38
test eax, eax
je 0x525b4d
mov dword [esp + 0x1c], 0
lea edx, [esp + 0x1c]
push 0x186a0
push eax
push ecx
push edx
call fcn.0051da20
add esp, 0x10
test eax, eax
je 0x525b5e
push dword [esp + 0x1c]
call fcn.0051e8f0
add esp, 4
or byte [esi + 0x30a], 1
test eax, eax
jne 0x525b65
jmp 0x525b8a
test eax, eax
je 0x525b6f
push eax
call fcn.0051e890
add esp, 4
mov dword [esi + 0x2c0], eax
jmp 0x525b83
push ecx
call fcn.0051e890
add esp, 4
mov dword [esi + 0x184], eax
jmp 0x525b83
or byte [esi + 0x30a], 1
mov eax, 0x2000
or eax, dword [esi + 0x78]
jmp 0x525b92
mov dword [esi + 0x2c0], 0x186a0
mov dword [esi + 0x184], 0x186a0
or byte [esi + 0x30a], 1
mov eax, 0xffffdfff
and eax, dword [esi + 0x78]
mov dword [esi + 0x78], eax
mov ecx, eax
and ecx, 0x40080
cmp ecx, 0x40000
jne 0x525bba
and eax, 0xfd7ffeff
mov dword [esi + 0x78], eax
and byte [esi + 0x75], 0xdf
mov word [esi + 0x144], 0
push dword [esi + 0x184]
call fcn.0051e8f0
add esp, 4
mov edx, dword [esi + 0x78]
test eax, eax
jne 0x525bdc
and edx, 0xff7fffff
mov dword [esi + 0x78], edx
and byte [esi + 0x75], 0xdf
test edx, 0x600000
je 0x525bf0
push esi
call fcn.0051d7c0
add esp, 4
mov edx, dword [esi + 0x78]
test edx, 0x100
jne 0x525c29
mov eax, edx
not eax
test eax, 0x4080
jne 0x525c36
movzx eax, word [esi + 0x162]
cmp ax, word [esi + 0x164]
jne 0x525c36
cmp ax, word [esi + 0x166]
jne 0x525c36
or byte [esi + 0x71], 8
mov word [esi + 0x168], ax
jmp 0x525c36
test byte [esi + 0x14b], 2
jne 0x525c36
or byte [esi + 0x71], 8
mov cl, byte [esi + 0x14b]
cmp cl, 3
jne 0x525c85
mov eax, esi
movzx esi, word [esi + 0x144]
test esi, esi
je 0x525d20
mov eax, dword [eax + 0x1ac]
xor edi, edi
xor ebx, ebx
jmp 0x525c6d
add edi, 1
mov ecx, esi
cmp esi, edi
je 0x525d08
movzx ecx, byte [eax + edi]
cmp cl, 0xff
je 0x525c60
test cl, cl
jne 0x525d31
mov ebx, 1
jmp 0x525c60
test cl, 4
jne 0x525cab
mov eax, edx
and byte [esi + 0x75], 0xdf
and eax, 0xff7fffff
cmp word [esi + 0x144], 0
mov dword [esi + 0x78], eax
jne 0x525cad
and edx, 0xff7ffe7f
mov dword [esi + 0x78], edx
mov eax, edx
mov edx, eax
not edx
test edx, 0x1100
jne 0x525ef1
and cl, 2
jne 0x525ef1
movzx edx, word [esi + 0x168]
movzx ecx, word [esi + 0x1b8]
mov bl, byte [esi + 0x14c]
cmp bl, 4
je 0x525e28
cmp bl, 2
je 0x525e3c
cmp bl, 1
jne 0x525e42
mov edi, edx
shl edi, 8
sub edi, edx
mov ebx, ecx
shl ebx, 8
sub ebx, ecx
jmp 0x525e36
mov eax, edx
and eax, 0xff7fffff
mov ecx, dword [esp + 0x34]
mov dword [ecx + 0x78], eax
and byte [ecx + 0x75], 0xdf
test ebx, ebx
jne 0x525d33
jmp 0x525d24
and byte [eax + 0x75], 0xdf
and edx, 0xff7ffe7f
mov eax, dword [esp + 0x34]
mov dword [eax + 0x78], edx
mov eax, edx
mov ecx, eax
not ecx
test ecx, 0x1100
jne 0x525ef1
mov ebx, dword [esp + 0x34]
mov ecx, dword [ebx + 0x138]
movzx edx, byte [ebx + 0x160]
lea edx, [edx + edx*2]
movzx edi, byte [ecx + edx]
mov word [ebx + 0x162], di
movzx edi, byte [ecx + edx + 1]
mov word [ebx + 0x164], di
movzx ecx, byte [ecx + edx + 2]
mov word [ebx + 0x166], cx
mov ecx, eax
and ecx, 0x2080000
cmp ecx, 0x80000
jne 0x525ef1
test esi, esi
je 0x525ef1
mov ecx, esi
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 0x1ac]
xor edx, edx
cmp cx, 8
jb 0x525ee0
xor edx, edx
cmp cx, 0x20
jb 0x525ead
mov edx, ecx
and edx, 0xffffffe0
lea ecx, [edx - 0x20]
mov ebx, ecx
shr ebx, 5
add ebx, 1
test ecx, ecx
je 0x525e79
mov ebp, ebx
and ebp, 0xfffffffe
xor edi, edi
pcmpeqd xmm0, xmm0
nop dword [eax]
movdqu xmm1, xmmword [eax + edi]
movdqu xmm2, xmmword [eax + edi + 0x10]
pxor xmm1, xmm0
pxor xmm2, xmm0
movdqu xmmword [eax + edi], xmm1
movdqu xmmword [eax + edi + 0x10], xmm2
movdqu xmm1, xmmword [eax + edi + 0x20]
movdqu xmm2, xmmword [eax + edi + 0x30]
pxor xmm1, xmm0
pxor xmm2, xmm0
movdqu xmmword [eax + edi + 0x20], xmm1
movdqu xmmword [eax + edi + 0x30], xmm2
add edi, 0x40
add ebp, 0xfffffffe
jne 0x525de0
jmp 0x525e7b
mov edi, edx
shl edi, 4
add edi, edx
mov ebx, ecx
shl ebx, 4
add ebx, ecx
mov edx, edi
mov ecx, ebx
jmp 0x525e42
imul edx, edx, 0x55
imul ecx, ecx, 0x55
mov word [esi + 0x166], dx
mov word [esi + 0x164], dx
mov word [esi + 0x162], dx
test eax, 0x2000000
jne 0x525ef1
mov word [esi + 0x1b6], cx
mov word [esi + 0x1b4], cx
mov word [esi + 0x1b2], cx
jmp 0x525ef1
xor edi, edi
test bl, 1
mov ecx, esi
je 0x525ea4
movdqu xmm0, xmmword [eax + edi]
movdqu xmm1, xmmword [eax + edi + 0x10]
pcmpeqd xmm2, xmm2
pxor xmm0, xmm2
pxor xmm1, xmm2
movdqu xmmword [eax + edi], xmm0
movdqu xmmword [eax + edi + 0x10], xmm1
cmp edx, ecx
je 0x525eea
test cl, 0x18
je 0x525ee0
mov edi, edx
mov edx, ecx
and edx, 0xfffffff8
pcmpeqd xmm0, xmm0
nop dword [eax + eax]
movq xmm1, qword [eax + edi]
pxor xmm1, xmm0
movq qword [eax + edi], xmm1
add edi, 8
cmp edx, edi
jne 0x525ec0
cmp edx, ecx
je 0x525eea
nop dword [eax]
not byte [eax + edx]
add edx, 1
cmp ecx, edx
jne 0x525ee0
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 0x78]
mov ecx, eax
and ecx, 0x380
cmp ecx, 0x280
mov esi, dword [esp + 0x34]
jne 0x525f44
cmp byte [esi + 0x14c], 0x10
je 0x525f44
movq xmm0, qword [esi + 0x162]
pxor xmm1, xmm1
punpcklwd xmm0, xmm1
movdqa xmm1, xmm0
pslld xmm1, 8
psubd xmm1, xmm0
paddd xmm1, xmmword [0x570520]
psrld xmm1, 0x10
packssdw xmm1, xmm1
movq qword [esi + 0x162], xmm1
mov ecx, eax
and ecx, 0x80
test eax, 0x4000400
je 0x525fbc
test ecx, ecx
je 0x525fbc
mov edx, eax
and edx, 0x100
jne 0x525fbc
cmp byte [esi + 0x14c], 0x10
jne 0x525fbc
movzx edx, word [esi + 0x162]
mov edi, edx
shl edi, 8
add edi, edx
mov word [esi + 0x162], di
mov edi, dword [esi + 0x164]
mov edx, dword [esi + 0x168]
mov ebx, edi
shl ebx, 8
add ebx, edi
mov word [esi + 0x164], bx
movzx edi, word [esi + 0x166]
mov ebx, edi
shl ebx, 8
add ebx, edi
mov word [esi + 0x166], bx
mov edi, edx
shl edi, 8
add edi, edx
mov word [esi + 0x168], di
movzx edx, word [esi + 0x168]
mov word [esi + 0x172], dx
movsd xmm0, qword [esi + 0x160]
movsd qword [esi + 0x16a], xmm0
test eax, 0x2000
jne 0x526084
test eax, 0x600000
je 0x52601c
push dword [esi + 0x2c0]
call fcn.0051e8f0
add esp, 4
test eax, eax
jne 0x526084
push dword [esi + 0x184]
call fcn.0051e8f0
add esp, 4
test eax, eax
jne 0x526084
mov ecx, 0x80
and ecx, dword [esi + 0x78]
test ecx, ecx
je 0x52605f
push dword [esi + 0x2c0]
call fcn.0051e8f0
add esp, 4
test eax, eax
jne 0x526084
push dword [esi + 0x184]
call fcn.0051e8f0
add esp, 4
test eax, eax
jne 0x526084
cmp byte [esi + 0x158], 3
jne 0x52605f
push dword [esi + 0x15c]
call fcn.0051e8f0
add esp, 4
test eax, eax
jne 0x526084
mov ecx, dword [esi + 0x78]
test ecx, 0x800000
je 0x5267c3
push dword [esi + 0x184]
call fcn.0051e8f0
add esp, 4
test eax, eax
je 0x5267c0
movzx eax, byte [esi + 0x14c]
push eax
push esi
call fcn.0051ed20
add esp, 8
mov ecx, dword [esi + 0x78]
mov al, byte [esi + 0x14b]
test cl, 0x80
jne 0x52612c
cmp al, 3
jne 0x52660b
test ecx, 0x1000
je 0x5260c4
mov eax, ecx
and eax, 0x600000
jne 0x52660b
movzx edx, word [esi + 0x13c]
test edx, edx
je 0x526121
mov eax, dword [esi + 0x138]
lea ecx, [edx + edx*2]
xor edx, edx
nop word [eax + eax]
mov edi, dword [esi + 0x188]
movzx ebx, byte [eax + edx]
movzx ebx, byte [edi + ebx]
mov byte [eax + edx], bl
mov edi, dword [esi + 0x188]
movzx ebx, byte [eax + edx + 1]
movzx ebx, byte [edi + ebx]
mov byte [eax + edx + 1], bl
mov edi, dword [esi + 0x188]
movzx ebx, byte [eax + edx + 2]
movzx ebx, byte [edi + ebx]
mov byte [eax + edx + 2], bl
add edx, 3
cmp ecx, edx
jne 0x5260e0
mov ecx, dword [esi + 0x78]
and ecx, 0xffffdfff
jmp 0x526608
cmp al, 3
jne 0x5261c1
mov ebp, dword [esi + 0x138]
movzx ebx, word [esi + 0x13c]
mov al, byte [esi + 0x158]
mov edi, 0x186a0
cmp al, 1
je 0x526381
cmp al, 3
je 0x52638d
mov dword [esp + 4], 0x186a0
cmp al, 2
jne 0x5263b5
mov ecx, dword [esi + 0x188]
mov edx, dword [esi + 0x194]
movzx eax, word [esi + 0x164]
mov dword [esp + 4], eax
mov al, byte [ecx + eax]
mov byte [esp], al
movzx edi, word [esi + 0x166]
mov al, byte [ecx + edi]
mov byte [esp + 0x14], al
mov eax, dword [esp + 4]
mov ah, byte [edx + eax]
mov al, byte [edx + edi]
movzx edi, word [esi + 0x162]
mov cl, byte [ecx + edi]
mov dl, byte [edx + edi]
mov dword [esp + 0xc], edx
mov edx, ecx
test ebx, ebx
jne 0x526483
jmp 0x526600
mov al, byte [esi + 0x158]
cmp al, 3
je 0x5261e4
cmp al, 2
je 0x526202
cmp al, 1
jne 0x526906
mov edi, dword [esi + 0x184]
mov ebx, 0x186a0
jmp 0x526228
push dword [esi + 0x15c]
call fcn.0051e890
add esp, 4
mov edi, eax
push dword [esi + 0x184]
push dword [esi + 0x15c]
jmp 0x52621e
push dword [esi + 0x2c0]
call fcn.0051e890
add esp, 4
mov edi, eax
push dword [esi + 0x184]
push dword [esi + 0x2c0]
call fcn.0051e910
add esp, 8
mov ebx, eax
push edi
call fcn.0051e8f0
add esp, 4
mov ebp, eax
mov dword [esp], ebx
push ebx
call fcn.0051e8f0
add esp, 4
mov ebx, eax
test ebp, ebp
je 0x52625e
movzx eax, word [esi + 0x168]
push edi
push eax
push esi
call fcn.0051ea80
add esp, 0xc
mov word [esi + 0x172], ax
test ebx, ebx
je 0x52627d
movzx eax, word [esi + 0x168]
push dword [esp]
push eax
push esi
call fcn.0051ea80
add esp, 0xc
mov word [esi + 0x168], ax
movzx eax, word [esi + 0x162]
cmp ax, word [esi + 0x164]
jne 0x5262d5
cmp ax, word [esi + 0x166]
jne 0x5262d5
cmp ax, word [esi + 0x168]
jne 0x5262d5
movzx ecx, word [esi + 0x172]
mov word [esi + 0x170], cx
mov word [esi + 0x16e], cx
mov word [esi + 0x16c], cx
mov word [esi + 0x166], ax
mov word [esi + 0x164], ax
mov word [esi + 0x162], ax
jmp 0x526372
test ebp, ebp
je 0x526320
movzx eax, ax
push edi
push eax
push esi
call fcn.0051ea80
add esp, 0xc
mov word [esi + 0x16c], ax
movzx eax, word [esi + 0x164]
push edi
push eax
push esi
call fcn.0051ea80
add esp, 0xc
mov word [esi + 0x16e], ax
movzx eax, word [esi + 0x166]
push edi
push eax
push esi
call fcn.0051ea80
add esp, 0xc
mov word [esi + 0x170], ax
test ebx, ebx
je 0x526372
movzx eax, word [esi + 0x162]
mov edi, dword [esp]
push edi
push eax
push esi
call fcn.0051ea80
add esp, 0xc
mov word [esi + 0x162], ax
movzx eax, word [esi + 0x164]
push edi
push eax
push esi
call fcn.0051ea80
add esp, 0xc
mov word [esi + 0x164], ax
movzx eax, word [esi + 0x166]
push edi
push eax
push esi
call fcn.0051ea80
add esp, 0xc
mov word [esi + 0x166], ax
mov byte [esi + 0x158], 1
mov ecx, dword [esi + 0x78]
jmp 0x52660b
mov eax, dword [esi + 0x184]
mov dword [esp + 4], eax
jmp 0x5263b5
push dword [esi + 0x15c]
call fcn.0051e890
add esp, 4
mov dword [esp + 4], eax
push dword [esi + 0x184]
push dword [esi + 0x15c]
call fcn.0051e910
add esp, 8
mov edi, eax
push edi
call fcn.0051e8f0
add esp, 4
movzx ecx, word [esi + 0x162]
test eax, eax
je 0x5263fe
push edi
push ecx
call fcn.0051e980
add esp, 8
mov dword [esp + 8], eax
movzx eax, word [esi + 0x164]
push edi
push eax
call fcn.0051e980
add esp, 8
mov byte [esp], al
movzx eax, word [esi + 0x166]
push edi
push eax
call fcn.0051e980
add esp, 8
jmp 0x526411
mov dword [esp + 8], ecx
mov al, byte [esi + 0x164]
mov byte [esp], al
mov al, byte [esi + 0x166]
mov byte [esp + 0x14], al
mov edi, dword [esp + 4]
push edi
call fcn.0051e8f0
add esp, 4
movzx ecx, word [esi + 0x162]
test eax, eax
je 0x526467
push edi
push ecx
call fcn.0051e980
add esp, 8
mov dword [esp + 0xc], eax
movzx eax, word [esi + 0x164]
push edi
push eax
call fcn.0051e980
add esp, 8
mov byte [esp + 0x13], al
movzx eax, word [esi + 0x166]
push edi
push eax
call fcn.0051e980
mov ah, byte [esp + 0x1b]
add esp, 8
jmp 0x526477
mov dword [esp + 0xc], ecx
mov ah, byte [esi + 0x164]
mov al, byte [esi + 0x166]
mov edx, dword [esp + 8]
test ebx, ebx
je 0x526600
movzx ecx, byte [esp + 0xc]
mov dword [esp + 4], ecx
movzx ecx, ah
mov dword [esp + 0xc], ecx
movzx eax, al
mov dword [esp + 8], eax
add ebp, 2
xor edi, edi
mov dword [esp + 0x18], ebx
jmp 0x5264f1
mov eax, dword [esi + 0x188]
movzx ecx, byte [ebp - 2]
movzx eax, byte [eax + ecx]
mov byte [ebp - 2], al
mov eax, dword [esi + 0x188]
movzx ecx, byte [ebp - 1]
movzx eax, byte [eax + ecx]
mov byte [ebp - 1], al
mov eax, dword [esi + 0x188]
movzx ecx, byte [ebp]
movzx eax, byte [eax + ecx]
mov byte [ebp], al
add edi, 1
add ebp, 3
cmp ebx, edi
je 0x526600
movzx ecx, word [esi + 0x144]
cmp edi, ecx
jae 0x5264b0
mov ecx, dword [esi + 0x1ac]
movzx ecx, byte [ecx + edi]
cmp ecx, 0xff
je 0x5264b0
test cl, cl
jne 0x526523
mov byte [ebp - 2], dl
movzx eax, byte [esp]
mov byte [ebp - 1], al
movzx eax, byte [esp + 0x14]
jmp 0x5264e0
mov ebx, edx
mov edx, dword [esi + 0x194]
movzx eax, byte [ebp - 2]
movzx eax, byte [edx + eax]
imul eax, ecx
not cl
movzx ecx, cl
imul ecx, dword [esp + 4]
lea edx, [ecx + eax]
add eax, ecx
add eax, 0x80
mov ecx, dword [esi + 0x190]
movzx eax, ah
lea eax, [eax + edx + 0x80]
movzx eax, ah
movzx eax, byte [ecx + eax]
mov byte [ebp - 2], al
mov eax, dword [esi + 0x194]
movzx ecx, byte [ebp - 1]
movzx eax, byte [eax + ecx]
mov ecx, dword [esi + 0x1ac]
movzx ecx, byte [ecx + edi]
imul eax, ecx
xor ecx, 0xff
imul ecx, dword [esp + 0xc]
lea edx, [ecx + eax]
add eax, ecx
add eax, 0x80
mov ecx, dword [esi + 0x190]
movzx eax, ah
lea eax, [eax + edx + 0x80]
movzx eax, ah
movzx eax, byte [ecx + eax]
mov byte [ebp - 1], al
mov eax, dword [esi + 0x194]
movzx ecx, byte [ebp]
movzx eax, byte [eax + ecx]
mov ecx, dword [esi + 0x1ac]
movzx ecx, byte [ecx + edi]
imul eax, ecx
xor ecx, 0xff
imul ecx, dword [esp + 8]
lea edx, [ecx + eax]
add eax, ecx
add eax, 0x80
movzx eax, ah
lea eax, [eax + edx + 0x80]
mov edx, ebx
mov ebx, dword [esp + 0x18]
mov ecx, dword [esi + 0x190]
movzx eax, ah
movzx eax, byte [ecx + eax]
jmp 0x5264e0
mov ecx, 0xffffdf7f
and ecx, dword [esi + 0x78]
mov dword [esi + 0x78], ecx
mov eax, ecx
and eax, 0x1008
cmp eax, 8
jne 0x5267b8
cmp byte [esi + 0x14b], 3
jne 0x5267b8
movzx edx, word [esi + 0x13c]
movzx ebx, byte [esi + 0x1a0]
and ecx, 0xfffffff7
mov dword [esi + 0x78], ecx
mov ecx, ebx
add cl, 0xff
cmp cl, 6
mov dword [esp], edx
ja 0x5266b7
test edx, edx
je 0x52673b
mov ecx, 8
sub ecx, ebx
xor edi, edi
cmp dx, 1
je 0x52669a
mov ebx, dword [esp]
and ebx, 0xfffffffe
xor ebp, ebp
xor edi, edi
nop word [eax + eax]
mov edx, dword [esi + 0x138]
movzx eax, byte [edx + ebp]
shr eax, cl
mov byte [edx + ebp], al
mov eax, dword [esi + 0x138]
movzx edx, byte [eax + ebp + 3]
shr edx, cl
mov byte [eax + ebp + 3], dl
add edi, 2
add ebp, 6
cmp ebx, edi
jne 0x526670
mov edx, dword [esp]
test dl, 1
je 0x5266b7
mov eax, dword [esi + 0x138]
lea edx, [edi + edi*2]
movzx ebx, byte [eax + edx]
shr ebx, cl
mov byte [eax + edx], bl
mov edx, dword [esp]
movzx ebx, byte [esi + 0x1a1]
mov eax, ebx
add al, 0xff
cmp al, 6
ja 0x52673b
test edx, edx
je 0x52673b
mov ecx, 8
sub ecx, ebx
xor edi, edi
cmp dx, 1
je 0x52671c
mov ebx, dword [esp]
and ebx, 0xfffffffe
xor ebp, ebp
xor edi, edi
nop word cs:[eax + eax]
nop dword [eax]
mov eax, dword [esi + 0x138]
movzx edx, byte [eax + ebp + 1]
shr edx, cl
mov byte [eax + ebp + 1], dl
mov eax, dword [esi + 0x138]
movzx edx, byte [eax + ebp + 4]
shr edx, cl
mov byte [eax + ebp + 4], dl
add edi, 2
add ebp, 6
cmp ebx, edi
jne 0x5266f0
mov edx, dword [esp]
test dl, 1
je 0x52673b
mov eax, dword [esi + 0x138]
lea edx, [edi + edi*2]
movzx ebx, byte [eax + edx + 1]
shr ebx, cl
mov byte [eax + edx + 1], bl
mov edx, dword [esp]
movzx eax, byte [esi + 0x1a2]
mov ecx, eax
add cl, 0xff
cmp cl, 6
ja 0x5267b8
test edx, edx
je 0x5267b8
mov ecx, 8
sub ecx, eax
xor eax, eax
cmp dx, 1
je 0x52679e
mov ebp, dword [esp]
and ebp, 0xfffffffe
xor edi, edi
xor eax, eax
nop dword [eax]
mov edx, dword [esi + 0x138]
movzx ebx, byte [edx + edi + 2]
shr ebx, cl
mov byte [edx + edi + 2], bl
mov edx, dword [esi + 0x138]
movzx ebx, byte [edx + edi + 5]
shr ebx, cl
mov byte [edx + edi + 5], bl
add eax, 2
add edi, 6
mov edx, ebp
cmp ebp, eax
jne 0x526770
test byte [esp], 1
je 0x5267b8
mov edx, dword [esi + 0x138]
lea eax, [eax + eax*2]
movzx ebx, byte [edx + eax + 2]
shr ebx, cl
mov byte [edx + eax + 2], bl
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [esi + 0x78]
test cl, 0x80
je 0x52660b
cmp byte [esi + 0x14b], 3
jne 0x52660b
movzx eax, word [esi + 0x144]
test eax, eax
je 0x5268fb
mov ecx, dword [esi + 0x138]
movzx edx, word [esi + 0x162]
mov dword [esp], edx
movzx edx, dl
movzx ebx, word [esi + 0x164]
mov dword [esp + 0x14], ebx
movzx edi, bl
movzx ebx, word [esi + 0x166]
mov dword [esp + 0x18], ebx
movzx ebx, bl
add ecx, 2
movzx edx, dx
mov dword [esp + 4], edx
movzx edx, di
mov dword [esp + 0xc], edx
movzx edx, bx
mov dword [esp + 8], edx
xor edi, edi
jmp 0x5268c6
movzx ebx, byte [ecx - 2]
imul ebx, ebp
not dl
movzx edx, dl
imul edx, dword [esp + 4]
add edx, ebx
add edx, 0x80
movzx edx, dx
mov ebx, edx
shr ebx, 8
add ebx, edx
mov byte [ecx - 2], bh
movzx edx, byte [ecx - 1]
mov ebx, dword [esi + 0x1ac]
movzx ebx, byte [ebx + edi]
imul edx, ebx
xor ebx, 0xff
imul ebx, dword [esp + 0xc]
add edx, ebx
add edx, 0x80
movzx edx, dx
mov ebx, edx
shr ebx, 8
add ebx, edx
mov byte [ecx - 1], bh
movzx edx, byte [ecx]
mov ebx, dword [esi + 0x1ac]
movzx ebx, byte [ebx + edi]
imul edx, ebx
xor ebx, 0xff
imul ebx, dword [esp + 8]
add edx, ebx
add edx, 0x80
movzx edx, dx
mov ebx, edx
shr ebx, 8
add ebx, edx
mov byte [ecx], bh
add edi, 1
add ecx, 3
cmp eax, edi
je 0x5268f8
mov edx, dword [esi + 0x1ac]
movzx edx, byte [edx + edi]
movzx ebp, dx
cmp ebp, 0xff
je 0x5268bc
test dl, dl
jne 0x526836
mov edx, dword [esp]
mov byte [ecx - 2], dl
mov edx, dword [esp + 0x14]
mov byte [ecx - 1], dl
mov edx, dword [esp + 0x18]
mov byte [ecx], dl
jmp 0x5268bc
mov ecx, dword [esi + 0x78]
and ecx, 0xffffff7f
jmp 0x526608
push str.invalid_background_gamma_type
push esi
call fcn.00522ad0
nop word cs:[eax + eax]
nop dword [eax + eax]