Function at 0x4088d0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
mov esi, 0x78
push ebx
sub esp, 0x840
mov dword [esp], 0
call dword [sym.imp.user32.dll_GetDC]
sub esp, 4
mov dword [ebp - 0x820], eax
mov dword [esp + 4], 0x428
mov dword [esp], 1
call dword [sym.imp.msvcrt.dll_calloc]
mov dword [eax], 0x28
mov ebx, eax
mov dword [eax + 4], 8
mov dword [eax + 8], 8
mov dword [eax + 0xc], 0x200001
mov dword [eax + 0x10], 0
lea eax, [ebp - 0x818]
mov dword [esp + 0xc], eax
mov eax, dword [sym.imp.gdi32.dll_CreateDIBSection]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0
mov dword [esp + 4], ebx
mov dword [esp], 0
mov dword [ebp - 0x828], eax
call eax
mov dword [ebp - 0x81c], eax
mov eax, dword [ebp - 0x818]
sub esp, 0x18
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, 0xaaaaaaaa
shr ecx, 2
rep stosd dword es:[edi], eax
xor eax, eax
lea esi, [esi]
nop
mov ecx, eax
mov edx, esi
mov dword [ebp + eax*4 - 0x814], eax
and ecx, 0xfffffff8
sub edx, ecx
mov ecx, eax
and ecx, 7
add edx, ecx
mov dword [ebp + edx*4 - 0x614], eax
add eax, 1
cmp eax, 0x80
jne 0x4089a8
lea eax, [ebp - 0x814]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 8
mov dword [esp + 8], 0
mov eax, dword [ebp - 0x81c]
mov dword [esp + 4], eax
mov eax, dword [sym.imp.gdi32.dll_SetDIBits]
mov esi, dword [ebp - 0x820]
mov dword [esp], esi
mov dword [ebp - 0x824], eax
call eax
sub esp, 0x1c
mov esi, eax
mov eax, 0x121b
call fcn.00401020
xor eax, eax
cmp esi, 8
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], 0x499de7
mov dword [esp], eax
call fcn.00401820
mov eax, 0x121c
call fcn.00401020
lea ecx, [ebp - 0x814]
mov dword [esp + 8], 0x100
mov dword [esp + 4], ecx
mov eax, dword [ebp - 0x818]
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
mov eax, dword [ebp - 0x818]
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, 0xaaaaaaaa
shr ecx, 2
rep stosd dword es:[edi], eax
lea ecx, [ebp - 0x814]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], 0
mov dword [esp + 0xc], 5
mov dword [esp + 8], 1
mov edi, dword [ebp - 0x81c]
mov dword [esp + 4], edi
mov esi, dword [ebp - 0x820]
mov dword [esp], esi
mov eax, dword [ebp - 0x824]
call eax
sub esp, 0x1c
mov esi, eax
mov eax, 0x1220
call fcn.00401020
xor eax, eax
cmp esi, 5
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], 0x499de7
xor esi, esi
mov dword [esp], eax
call fcn.00401820
nop
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x1221
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + esi*4]
mov dword [esp + 8], esi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add esi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp esi, 8
jne 0x408b20
mov eax, 0x1222
mov esi, 0x30
call fcn.00401020
lea eax, [ebp - 0x814]
mov dword [esp + 8], 0xa0
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x818]
add eax, 0x20
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x1223
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + esi*4]
mov dword [esp + 8], esi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add esi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp esi, 0x40
jne 0x408bb0
mov eax, dword [ebp - 0x818]
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, 0xaaaaaaaa
shr ecx, 2
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x814]
mov dword [ebx + 8], 0x10
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0xc
mov dword [esp + 8], 1
mov eax, dword [ebp - 0x81c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x820]
mov dword [esp], eax
mov eax, dword [ebp - 0x824]
call eax
sub esp, 0x1c
mov esi, eax
mov eax, 0x122b
call fcn.00401020
xor eax, eax
cmp esi, 0xc
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], 0x499de7
mov esi, 0x28
mov dword [esp], eax
call fcn.00401820
mov eax, 0x122c
call fcn.00401020
lea eax, [ebp - 0x734]
mov dword [esp + 8], 0xa0
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x818]
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
nop
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x122d
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + esi*4]
mov dword [esp + 8], esi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add esi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp esi, 0x40
jne 0x408ce0
mov eax, dword [ebp - 0x818]
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, 0xaaaaaaaa
shr ecx, 2
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x814]
mov dword [ebx + 8], 5
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 2
mov dword [esp + 8], 1
mov eax, dword [ebp - 0x81c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x820]
mov dword [esp], eax
mov eax, dword [ebp - 0x824]
call eax
sub esp, 0x1c
mov esi, eax
mov eax, 0x1232
call fcn.00401020
xor eax, eax
cmp esi, 2
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], 0x499de7
xor esi, esi
mov dword [esp], eax
call fcn.00401820
lea esi, [esi]
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x1233
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + esi*4]
mov dword [esp + 8], esi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add esi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp esi, 0x20
jne 0x408dd0
mov eax, 0x1234
mov esi, 0x30
call fcn.00401020
lea eax, [ebp - 0x814]
mov dword [esp + 8], 0x40
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x818]
sub eax, 0xffffff80
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x1235
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + esi*4]
mov dword [esp + 8], esi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add esi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp esi, 0x40
jne 0x408e60
mov eax, dword [ebp - 0x818]
mov esi, 0xaaaaaaaa
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, esi
shr ecx, 2
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x814]
mov dword [ebx + 8], 0xfffffff8
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 8
mov dword [esp + 8], 0
mov eax, dword [ebp - 0x81c]
mov dword [esp + 4], eax
mov edi, dword [ebp - 0x820]
mov dword [esp], edi
mov ecx, dword [ebp - 0x824]
call ecx
sub esp, 0x1c
mov edi, eax
mov eax, 0x123b
call fcn.00401020
xor eax, eax
cmp edi, 8
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], 0x499de7
mov dword [esp], eax
call fcn.00401820
mov eax, 0x123c
call fcn.00401020
lea edx, [ebp - 0x514]
mov dword [esp + 8], 0x100
mov dword [esp + 4], edx
mov eax, dword [ebp - 0x818]
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
mov eax, dword [ebp - 0x818]
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, esi
lea esi, [ebp - 0x814]
shr ecx, 2
rep stosd dword es:[edi], eax
mov dword [esp + 0x10], esi
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 0xc], 5
mov dword [esp + 8], 1
mov eax, dword [ebp - 0x81c]
mov dword [esp + 4], eax
mov edi, dword [ebp - 0x820]
mov dword [esp], edi
mov ecx, dword [ebp - 0x824]
call ecx
sub esp, 0x1c
mov esi, eax
mov eax, 0x1243
call fcn.00401020
xor eax, eax
cmp esi, 5
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], 0x499de7
xor esi, esi
mov dword [esp], eax
call fcn.00401820
lea esi, [esi]
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x1244
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + esi*4]
mov dword [esp + 8], esi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add esi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp esi, 8
jne 0x409028
mov eax, 0x1245
mov esi, 0x30
call fcn.00401020
lea eax, [ebp - 0x4b4]
mov dword [esp + 8], 0xa0
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x818]
add eax, 0x20
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
lea esi, [esi]
nop
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x1246
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + esi*4]
mov dword [esp + 8], esi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add esi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp esi, 0x40
jne 0x4090c0
mov eax, dword [ebp - 0x818]
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, 0xaaaaaaaa
shr ecx, 2
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x814]
mov dword [ebx + 8], 0xfffffff0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0xc
mov dword [esp + 8], 1
mov eax, dword [ebp - 0x81c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x820]
mov dword [esp], eax
mov eax, dword [ebp - 0x824]
call eax
sub esp, 0x1c
mov esi, eax
mov eax, 0x124b
call fcn.00401020
xor eax, eax
cmp esi, 0xc
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], 0x499de7
mov esi, 0x28
mov dword [esp], eax
call fcn.00401820
mov eax, 0x124c
call fcn.00401020
lea eax, [ebp - 0x4b4]
mov dword [esp + 8], 0xa0
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x818]
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
nop
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x124d
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + esi*4]
mov dword [esp + 8], esi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add esi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp esi, 0x40
jne 0x4091f0
mov eax, dword [ebp - 0x818]
mov esi, 0xaaaaaaaa
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, esi
shr ecx, 2
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x814]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], 0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0xc
mov dword [esp + 8], 4
mov eax, dword [ebp - 0x81c]
mov dword [esp + 4], eax
mov edi, dword [ebp - 0x820]
mov dword [esp], edi
mov ecx, dword [ebp - 0x824]
call ecx
sub esp, 0x1c
mov edi, eax
mov eax, 0x1251
call fcn.00401020
xor eax, eax
cmp edi, 0xc
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], 0x499de7
mov dword [esp], eax
call fcn.00401820
mov eax, 0x1252
call fcn.00401020
lea edx, [ebp - 0x514]
mov dword [esp + 8], 0x100
mov dword [esp + 4], edx
mov eax, dword [ebp - 0x818]
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
mov eax, dword [ebp - 0x818]
lea edx, [ebp - 0x814]
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, esi
shr ecx, 2
rep stosd dword es:[edi], eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 0xc], 0xc
mov dword [esp + 8], 5
mov eax, dword [ebp - 0x81c]
mov dword [esp + 4], eax
mov edi, dword [ebp - 0x820]
mov dword [esp], edi
mov ecx, dword [ebp - 0x824]
call ecx
sub esp, 0x1c
mov edi, eax
mov eax, 0x1256
call fcn.00401020
xor eax, eax
cmp edi, 0xc
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], 0x499de7
mov dword [esp], eax
call fcn.00401820
mov eax, 0x1257
call fcn.00401020
lea eax, [ebp - 0x534]
mov dword [esp + 8], 0x100
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x818]
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
mov eax, dword [ebp - 0x818]
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, esi
lea esi, [ebp - 0x814]
shr ecx, 2
rep stosd dword es:[edi], eax
mov dword [ebx + 8], 0xfffffffb
mov dword [esp + 0x10], esi
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 0xc], 2
mov dword [esp + 8], 1
mov eax, dword [ebp - 0x81c]
mov dword [esp + 4], eax
mov edi, dword [ebp - 0x820]
mov dword [esp], edi
mov ecx, dword [ebp - 0x824]
call ecx
sub esp, 0x1c
mov esi, eax
mov eax, 0x125c
call fcn.00401020
xor eax, eax
cmp esi, 2
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], 0x499de7
xor esi, esi
mov dword [esp], eax
call fcn.00401820
lea esi, [esi]
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x125d
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + esi*4]
mov dword [esp + 8], esi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add esi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp esi, 0x20
jne 0x409490
mov eax, 0x125e
mov edi, 0x30
call fcn.00401020
lea eax, [ebp - 0x454]
mov dword [esp + 8], 0x40
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x818]
sub eax, 0xffffff80
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x125f
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + edi*4]
mov dword [esp + 8], edi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add edi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp edi, 0x40
jne 0x409520
mov eax, dword [ebp - 0x818]
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, 0xaaaaaaaa
shr ecx, 2
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x81c]
mov dword [esp], edi
mov edi, dword [sym.imp.gdi32.dll_DeleteObject]
mov dword [ebp - 0x830], edi
call edi
lea edi, [ebp - 0x818]
mov dword [ebx + 8], 0xfffffff8
sub esp, 4
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov dword [esp + 8], 0
mov dword [esp + 4], ebx
mov dword [esp], 0
mov edi, dword [ebp - 0x828]
call edi
mov edx, eax
mov eax, dword [ebp - 0x818]
sub esp, 0x18
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0x3fc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x400]
mov eax, 0xaaaaaaaa
shr ecx, 2
rep stosd dword es:[edi], eax
lea edi, [ebp - 0x814]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], 0
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], 8
mov dword [esp + 8], 0
mov dword [ebp - 0x828], edx
mov dword [esp + 4], edx
mov edi, dword [ebp - 0x820]
mov dword [esp], edi
mov ecx, dword [ebp - 0x824]
call ecx
sub esp, 0x1c
mov edi, eax
mov eax, 0x126e
call fcn.00401020
xor eax, eax
cmp edi, 8
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], 0x499de7
lea edi, [ebp - 0x814]
mov dword [esp], eax
call fcn.00401820
mov eax, 0x126f
call fcn.00401020
mov dword [esp + 4], edi
mov dword [esp + 8], 0x100
mov eax, dword [ebp - 0x818]
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
mov eax, dword [ebp - 0x818]
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, 0xaaaaaaaa
shr ecx, 2
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x814]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], 0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 5
mov dword [esp + 8], 1
mov edx, dword [ebp - 0x828]
mov dword [esp + 4], edx
mov edi, dword [ebp - 0x820]
mov dword [esp], edi
mov ecx, dword [ebp - 0x824]
call ecx
sub esp, 0x1c
mov edi, eax
mov eax, 0x1273
call fcn.00401020
xor eax, eax
cmp edi, 5
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], 0x499de7
xor edi, edi
mov dword [esp], eax
call fcn.00401820
lea esi, [esi]
nop
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x1274
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + edi*4]
mov dword [esp + 8], edi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add edi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp edi, 0x10
jne 0x409770
mov eax, 0x1275
mov edi, 0x38
call fcn.00401020
lea eax, [ebp - 0x814]
mov dword [esp + 8], 0xa0
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x818]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x1276
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + edi*4]
mov dword [esp + 8], edi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add edi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp edi, 0x40
jne 0x409800
mov eax, dword [ebp - 0x818]
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, 0xaaaaaaaa
shr ecx, 2
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x814]
mov dword [ebx + 8], 0xfffffff0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0xc
mov dword [esp + 8], 1
mov eax, dword [ebp - 0x828]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x820]
mov dword [esp], eax
mov eax, dword [ebp - 0x824]
call eax
sub esp, 0x1c
mov edi, eax
mov eax, 0x127b
call fcn.00401020
xor eax, eax
cmp edi, 0xc
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], 0x499de7
xor edi, edi
mov dword [esp], eax
call fcn.00401820
lea esi, [esi]
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x127c
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + edi*4]
mov dword [esp + 8], edi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add edi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp edi, 0x18
jne 0x4098f0
mov eax, 0x127d
call fcn.00401020
lea eax, [ebp - 0x814]
mov dword [esp + 8], 0xa0
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x818]
add eax, 0x60
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
mov eax, dword [ebp - 0x818]
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, 0xaaaaaaaa
shr ecx, 2
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x814]
mov dword [ebx + 8], 0xfffffffb
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 2
mov dword [esp + 8], 1
mov eax, dword [ebp - 0x828]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x820]
mov dword [esp], eax
mov eax, dword [ebp - 0x824]
call eax
sub esp, 0x1c
mov edi, eax
mov eax, 0x1282
call fcn.00401020
xor eax, eax
cmp edi, 2
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], 0x499de7
xor edi, edi
mov dword [esp], eax
call fcn.00401820
nop
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x1283
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + edi*4]
mov dword [esp + 8], edi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add edi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp edi, 0x10
jne 0x409a20
mov eax, 0x1284
mov edi, 0x20
call fcn.00401020
lea eax, [ebp - 0x814]
mov dword [esp + 8], 0x40
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x818]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x1285
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + edi*4]
mov dword [esp + 8], edi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add edi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp edi, 0x40
jne 0x409ab0
mov eax, dword [ebp - 0x818]
mov edx, 0xaaaaaaaa
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, edx
shr ecx, 2
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x814]
mov dword [ebx + 8], 8
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 8
mov dword [esp + 8], 0
mov eax, dword [ebp - 0x828]
mov dword [esp + 4], eax
mov edi, dword [ebp - 0x820]
mov dword [esp], edi
mov ecx, dword [ebp - 0x824]
call ecx
sub esp, 0x1c
mov edi, eax
mov eax, 0x128d
call fcn.00401020
xor eax, eax
cmp edi, 8
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], 0x499de7
mov dword [esp], eax
call fcn.00401820
mov eax, 0x128e
call fcn.00401020
lea edx, [ebp - 0x514]
mov dword [esp + 8], 0x100
mov dword [esp + 4], edx
mov eax, dword [ebp - 0x818]
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
mov eax, dword [ebp - 0x818]
lea edx, [ebp - 0x814]
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, 0xaaaaaaaa
shr ecx, 2
rep stosd dword es:[edi], eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 0xc], 5
mov dword [esp + 8], 1
mov eax, dword [ebp - 0x828]
mov dword [esp + 4], eax
mov edi, dword [ebp - 0x820]
mov dword [esp], edi
mov ecx, dword [ebp - 0x824]
call ecx
sub esp, 0x1c
mov edi, eax
mov eax, 0x1292
call fcn.00401020
xor eax, eax
cmp edi, 5
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], 0x499de7
xor edi, edi
mov dword [esp], eax
call fcn.00401820
lea esi, [esi]
nop
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x1293
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + edi*4]
mov dword [esp + 8], edi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add edi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp edi, 0x10
jne 0x409c80
mov eax, 0x1294
mov edi, 0x38
call fcn.00401020
lea eax, [ebp - 0x4b4]
mov dword [esp + 8], 0xa0
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x818]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x1295
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + edi*4]
mov dword [esp + 8], edi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add edi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp edi, 0x40
jne 0x409d10
mov eax, dword [ebp - 0x818]
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, 0xaaaaaaaa
shr ecx, 2
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x814]
mov dword [ebx + 8], 0x10
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0xc
mov dword [esp + 8], 1
mov eax, dword [ebp - 0x828]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x820]
mov dword [esp], eax
mov eax, dword [ebp - 0x824]
call eax
sub esp, 0x1c
mov edi, eax
mov eax, 0x129a
call fcn.00401020
xor eax, eax
cmp edi, 0xc
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], 0x499de7
xor edi, edi
mov dword [esp], eax
call fcn.00401820
lea esi, [esi]
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x129b
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + edi*4]
mov dword [esp + 8], edi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add edi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp edi, 0x18
jne 0x409e00
mov eax, 0x129c
call fcn.00401020
lea eax, [ebp - 0x594]
mov dword [esp + 8], 0xa0
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x818]
add eax, 0x60
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
mov eax, dword [ebp - 0x818]
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, 0xaaaaaaaa
shr ecx, 2
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x814]
mov dword [ebx + 8], 5
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 2
mov dword [esp + 8], 1
mov eax, dword [ebp - 0x828]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x820]
mov dword [esp], eax
mov eax, dword [ebp - 0x824]
call eax
sub esp, 0x1c
mov edi, eax
mov eax, 0x12a1
call fcn.00401020
xor eax, eax
cmp edi, 2
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], 0x499de7
xor edi, edi
mov dword [esp], eax
call fcn.00401820
nop
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x12a2
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + edi*4]
mov dword [esp + 8], edi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add edi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp edi, 0x10
jne 0x409f30
mov eax, 0x12a3
call fcn.00401020
lea eax, [ebp - 0x454]
mov dword [esp + 8], 0x40
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x818]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.bits_differ_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401820
lea esi, [esi]
nop
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x12a4
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + esi*4]
mov dword [esp + 8], esi
mov dword [esp + 4], str._d:_got__08lx_n
cmp eax, 0xaaaaaaaa
mov dword [esp + 0xc], eax
sete al
add esi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp esi, 0x40
jne 0x409fc0
mov eax, dword [ebp - 0x818]
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, 0xaaaaaaaa
shr ecx, 2
rep stosd dword es:[edi], eax
mov dword [ebx + 8], 0xfffffff8
mov eax, 8
mov dword [ebx + 0x20], 0x89
mov word [ebx + 0xe], ax
xor eax, eax
lea esi, [esi]
mov edx, eax
mov byte [ebx + eax*4 + 0x28], al
not edx
mov byte [ebx + eax*4 + 0x2b], 0
mov byte [ebx + eax*4 + 0x2a], dl
lea edx, [eax + eax]
mov byte [ebx + eax*4 + 0x29], dl
add eax, 1
cmp eax, 0x100
jne 0x40a050
lea eax, [ebp - 0x814]
lea ecx, [ebp - 0x7d4]
mov edx, 1
lea esi, [esi]
nop
mov byte [eax], dl
add eax, 1
add edx, 4
cmp ecx, eax
jne 0x40a088
lea eax, [ebp - 0x814]
mov dword [esp + 0x14], ebx
mov edi, 1
mov dword [esp + 0x18], 0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 8
mov dword [esp + 8], 0
mov eax, dword [ebp - 0x828]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x820]
mov dword [esp], eax
mov eax, dword [ebp - 0x824]
call eax
sub esp, 0x1c
mov esi, eax
mov eax, 0x12b5
call fcn.00401020
xor eax, eax
cmp esi, 8
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], 0x499de7
xor esi, esi
mov dword [esp], eax
call fcn.00401820
mov edx, ebx
mov ebx, edi
mov edi, esi
lea esi, [esi]
xor esi, esi
cmp ebx, dword [edx + 0x20]
jae 0x40a130
movzx esi, byte [edx + ebx*4 + 0x2a]
movzx eax, byte [edx + ebx*4 + 0x29]
shl esi, 0x10
shl eax, 8
or esi, eax
movzx eax, byte [edx + ebx*4 + 0x28]
or esi, eax
mov dword [ebp - 0x81c], edx
call fcn.00492bc0
mov dword [eax], 0x499014
mov dword [eax + 4], 0x12bc
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + edi*4]
mov dword [esp + 8], edi
mov dword [esp + 0x10], esi
cmp eax, esi
mov dword [esp + 0xc], eax
sete al
mov dword [esp + 4], str._d:_got__08lx_instead_of__08lx_n
add edi, 1
add ebx, 4
movzx eax, al
mov dword [esp], eax
call fcn.00401820
cmp edi, 0x40
mov edx, dword [ebp - 0x81c]
jne 0x40a110
mov eax, dword [ebp - 0x818]
mov ebx, edx
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, 0xaaaaaaaa
shr ecx, 2
rep stosd dword es:[edi], eax
mov dword [edx + 0x20], 0xdd
xor eax, eax
lea edx, [ebp - 0x414]
mov dword [ebp - 0x414], 0x890300
nop
lea ecx, [eax + eax]
mov byte [edx + eax*4 + 6], al
mov byte [edx + eax*4 + 4], cl
mov ecx, eax
not ecx
mov byte [edx + eax*4 + 5], cl
add eax, 1
cmp eax, 0x100
jne 0x40a1d0
mov dword [esp], edx
call dword [sym.imp.gdi32.dll_CreatePalette]
sub esp, 4
mov edi, eax
mov dword [ebp - 0x82c], eax
mov eax, 0x12cc
call fcn.00401020
xor eax, eax
test edi, edi
mov dword [esp + 4], str.palette_creation_failed_n
setne al
mov dword [esp], eax
call fcn.00401820
mov dword [esp + 8], 0
mov dword [esp + 4], edi
mov eax, dword [ebp - 0x820]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_SelectPalette]
xor eax, eax
mov ecx, 0xff
sub esp, 0xc
lea esi, [esi]
nop
mov edx, ecx
sub edx, eax
mov word [ebx + eax*2 + 0x28], dx
add eax, 1
cmp eax, 0x100
jne 0x40a250
lea eax, [ebp - 0x814]
mov dword [esp + 0x14], ebx
mov edi, 1
mov dword [esp + 0x18], 1
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 8
mov dword [esp + 8], 0
mov eax, dword [ebp - 0x828]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x820]
mov dword [esp], eax
mov eax, dword [ebp - 0x824]
call eax
sub esp, 0x1c
mov esi, eax
mov eax, 0x12d0
call fcn.00401020
xor eax, eax
cmp esi, 8
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], 0x499de7
xor esi, esi
mov dword [esp], eax
call fcn.00401820
mov dword [ebp - 0x81c], ebx
mov ebx, esi
nop
mov eax, dword [ebp - 0x81c]
movzx edx, word [ebp - 0x412]
xor esi, esi
cmp edi, dword [eax + 0x20]
jae 0x40a31d
mov eax, 0xff
movzx esi, dx
sub eax, edi
cdq
idiv esi
lea eax, [ebp + edx*4 - 0x410]
movzx esi, byte [eax]
movzx edx, byte [eax + 1]
movzx eax, byte [eax + 2]
shl esi, 0x10
shl edx, 8
or esi, edx
or esi, eax
call fcn.00492bc0
mov edx, 1
mov dword [eax], 0x499014
mov dword [eax + 4], 0x12d7
mov eax, dword [ebp - 0x818]
mov eax, dword [eax + ebx*4]
cmp eax, esi
je 0x40a34e
xor edx, edx
mov ecx, eax
or ecx, dword [0x5b41f0]
sete dl
mov dword [esp + 8], ebx
add ebx, 1
add edi, 4
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], eax
mov dword [esp + 4], str._d:_got__08lx_instead_of__08lx_n
mov dword [esp], edx
call fcn.00401820
cmp ebx, 0x40
jne 0x40a2e0
mov eax, dword [ebp - 0x818]
mov ebx, dword [ebp - 0x81c]
lea edi, [eax + 4]
mov dword [eax], 0xaaaaaaaa
mov dword [eax + 0xfc], 0xaaaaaaaa
and edi, 0xfffffffc
sub eax, edi
lea ecx, [eax + 0x100]
mov eax, 0xaaaaaaaa
shr ecx, 2
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0x820]
mov dword [esp], 0
mov dword [esp + 4], eax
call dword [sym.imp.user32.dll_ReleaseDC]
mov eax, dword [ebp - 0x828]
sub esp, 8
mov dword [esp], eax
mov edi, dword [ebp - 0x830]
call edi
mov eax, dword [ebp - 0x82c]
sub esp, 4
mov dword [esp], eax
call edi
sub esp, 4
mov dword [esp], ebx
call dword [sym.imp.msvcrt.dll_free]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret