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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x7c
mov edi, dword [esp + 0x90]
mov eax, dword [esp + 0x94]
mov ecx, dword [edi + 0x124]
mov dword [esp + 0x20], eax
mov eax, dword [0x4b850c]
mov dword [esp + 0x6c], eax
xor eax, eax
mov dword [esp + 0x1c], edi
test ecx, ecx
je 0x4394b7
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x78]
mov dword [esp + 0x24], eax
and eax, 0x4040
cmp eax, 0x4000
je 0x4394cc
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
test dh, 0x10
je 0x436320
movzx ebx, word [eax + 0x148]
lea eax, [ecx + 1]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
cmp byte [eax + 8], 3
je 0x4374c0
test bx, bx
je 0x43630a
and edx, 0x2000000
jne 0x437420
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
xor ecx, ecx
call fcn.00433270
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
mov eax, edx
and eax, 0x40080
cmp eax, 0x40000
je 0x436cf8
test edx, 0x600000
jne 0x436d50
test dh, 0x40
jne 0x436648
test dl, 0x80
jne 0x436680
mov eax, edx
and eax, 0x602000
cmp eax, 0x2000
je 0x436ff8
test edx, 0x800000
jne 0x4364b0
test edx, 0x4000000
jne 0x436510
test dh, 4
jne 0x436ae8
test dl, 0x40
jne 0x436598
test dh, 2
jne 0x4365c5
test dh, 0x40
jne 0x436850
test dl, 0x20
jne 0x436888
test edx, 0x80000
jne 0x4368b8
test dl, 8
jne 0x436940
and edx, 4
jne 0x436a60
mov eax, dword [esp + 0x20]
cmp byte [eax + 8], 3
je 0x436b79
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x7c]
mov edx, eax
test al, 1
jne 0x436b98
test eax, 0x10000
jne 0x436bc9
test ah, 0x80
jne 0x436bf8
test edx, 0x20000
jne 0x436ec8
test dl, 0x10
jne 0x436e98
and edx, 0x100000
je 0x436492
mov edi, dword [esp + 0x1c]
mov edx, dword [edi + 0x64]
test edx, edx
je 0x43643e
mov eax, dword [edi + 0x124]
mov dword [esp], edi
mov dword [esp + 0x24], eax
add eax, 1
mov dword [esp + 8], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 4], eax
call edx
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + 0x70]
test al, al
jne 0x436f88
mov eax, dword [esp + 0x20]
movzx eax, byte [eax + 9]
mov edi, dword [esp + 0x1c]
movzx edx, byte [edi + 0x71]
test dl, dl
jne 0x436f78
mov esi, dword [esp + 0x20]
movzx edx, byte [esi + 0xa]
imul eax, edx
mov edi, dword [esp + 0x20]
mov edx, dword [edi]
mov byte [edi + 0xb], al
cmp al, 7
jbe 0x436f60
shr al, 3
movzx eax, al
imul eax, edx
mov edi, dword [esp + 0x20]
mov dword [edi + 4], eax
mov eax, dword [esp + 0x6c]
sub eax, dword [0x4b850c]
jne 0x4394c7
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x20]
movzx esi, byte [eax + 8]
test esi, 4
je 0x43636e
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
movzx ebx, byte [edi + 9]
mov ecx, dword [eax + 0x124]
mov eax, dword [edi]
cmp bl, 8
je 0x4385c8
cmp bl, 0x10
je 0x437960
mov ebx, dword [esp + 0x1c]
mov dword [esp + 4], str.png_do_encode_alpha:_unexpected_call
mov dword [esp], ebx
call fcn.0042b170
mov edx, dword [ebx + 0x7c]
test edx, 0x4000000
je 0x43637a
lea esi, [esi]
mov eax, dword [esp + 0x20]
cmp byte [eax + 9], 0x10
jne 0x436383
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x124]
mov dword [esp + 0x24], eax
lea ecx, [eax + 1]
mov eax, dword [esp + 0x20]
mov esi, ecx
mov edi, dword [eax + 4]
add edi, ecx
cmp ecx, edi
jae 0x436567
nop
movzx edx, byte [ecx]
movzx eax, byte [ecx + 1]
add ecx, 2
add esi, 1
sub eax, edx
sub eax, 0xffffff80
mov ebx, eax
shl ebx, 0x10
sub ebx, eax
mov eax, ebx
sar eax, 0x18
add edx, eax
mov byte [esi - 1], dl
cmp ecx, edi
jb 0x436540
mov edi, dword [esp + 0x20]
movzx eax, byte [edi + 0xa]
mov byte [edi + 9], 8
lea edx, [eax*8]
imul eax, dword [edi]
mov byte [edi + 0xb], dl
mov dword [edi + 4], eax
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
test dl, 0x40
je 0x43638c
lea esi, cs:[esi]
mov eax, dword [esp + 0x20]
cmp byte [eax + 9], 8
je 0x437568
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 4]
test eax, eax
je 0x4394e0
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
test dh, 2
je 0x436395
mov eax, dword [esp + 0x20]
cmp byte [eax + 9], 8
jne 0x436395
mov eax, dword [esp + 0x20]
cmp byte [eax + 8], 3
je 0x436395
mov ebx, dword [eax + 4]
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x124]
lea eax, [eax + ebx + 1]
lea ecx, [eax + ebx]
cmp eax, ecx
jae 0x436624
lea esi, [esi]
movzx ebx, byte [eax - 1]
sub eax, 1
sub ecx, 2
movzx edx, bl
mov dh, bl
mov word [ecx], dx
cmp eax, ecx
jb 0x436600
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 4]
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
mov ecx, dword [esp + 0x20]
add ebx, ebx
movzx eax, byte [ecx + 0xa]
mov dword [ecx + 4], ebx
mov byte [ecx + 9], 0x10
mov byte [esp + 0x24], al
shl eax, 4
mov byte [ecx + 0xb], al
jmp 0x436395
mov eax, dword [esp + 0x1c]
test byte [eax + 0x75], 8
jne 0x436347
mov esi, eax
mov eax, dword [eax + 0x124]
lea edx, [eax + 1]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
call fcn.00433090
mov edx, dword [esi + 0x7c]
test dl, 0x80
je 0x436350
lea esi, [esi]
mov eax, dword [esp + 0x1c]
mov edi, dword [eax + 0x18c]
mov ecx, dword [eax + 0x124]
mov ebp, dword [eax + 0x198]
mov ebx, dword [eax + 0x1a0]
mov dword [esp + 0x30], edi
mov edi, dword [eax + 0x194]
lea esi, [ecx + 1]
mov dword [esp + 0x3c], edi
mov edi, dword [eax + 0x190]
mov dword [esp + 0x28], edi
mov edi, dword [eax + 0x19c]
mov dword [esp + 0x38], edi
mov edi, dword [eax + 0x184]
mov eax, dword [eax + 0x78]
mov dword [esp + 0x34], edi
and eax, 0x2000
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x20]
mov edi, dword [eax]
movzx eax, byte [eax + 8]
mov dword [esp + 0x24], edi
cmp al, 4
je 0x437620
ja 0x437330
test al, al
je 0x437600
cmp al, 2
jne case.0x437612.0
mov eax, dword [esp + 0x20]
cmp byte [eax + 9], 8
je 0x437ac0
mov eax, dword [esp + 0x28]
test eax, eax
je 0x438d20
mov eax, dword [esp + 0x24]
test eax, eax
je case.0x437612.0
mov eax, dword [esp + 0x1c]
mov ebp, dword [esp + 0x28]
xor edi, edi
mov ecx, dword [esp + 0x34]
movzx eax, word [eax + 0x1b6]
mov word [esp + 0x46], ax
jmp 0x4367a3
movzx edx, byte [esp + 0x28]
movzx eax, byte [esp + 0x30]
sar edx, cl
sar eax, cl
mov edx, dword [ebp + edx*4]
movzx edx, word [edx + ebx*2]
mov byte [esi], dh
mov byte [esi + 1], dl
movzx edx, byte [esp + 0x2c]
mov eax, dword [ebp + eax*4]
movzx eax, word [eax + edx*2]
movzx edx, byte [esp + 0x34]
mov byte [esi + 2], ah
mov byte [esi + 3], al
movzx eax, byte [esp + 0x38]
sar eax, cl
mov eax, dword [ebp + eax*4]
movzx eax, word [eax + edx*2]
movzx edx, ah
mov byte [esi + 4], dl
add edi, 1
add esi, 6
mov byte [esi - 1], al
cmp dword [esp + 0x24], edi
je 0x436fd0
movzx eax, byte [esi + 1]
movzx ebx, byte [esi]
mov byte [esp + 0x28], al
movzx eax, word [esi + 2]
mov word [esp + 0x3c], ax
movzx eax, byte [esi + 2]
mov byte [esp + 0x2c], al
movzx eax, byte [esi + 3]
mov byte [esp + 0x30], al
movzx eax, word [esi + 4]
mov word [esp + 0x40], ax
movzx eax, byte [esi + 4]
mov byte [esp + 0x34], al
movzx eax, byte [esi + 5]
mov byte [esp + 0x38], al
movzx eax, word [esi]
rol ax, 8
cmp ax, word [esp + 0x46]
jne 0x436748
movzx eax, word [esp + 0x3c]
mov edx, dword [esp + 0x1c]
rol ax, 8
cmp ax, word [edx + 0x1b8]
jne 0x436748
movzx eax, word [esp + 0x40]
rol ax, 8
cmp ax, word [edx + 0x1ba]
jne 0x436748
movzx eax, word [edx + 0x166]
mov byte [esi], ah
mov byte [esi + 1], al
movzx eax, word [edx + 0x168]
mov byte [esi + 2], ah
mov byte [esi + 3], al
movzx eax, word [edx + 0x16a]
movzx edx, ah
jmp 0x43678d
mov eax, dword [esp + 0x1c]
test byte [eax + 0x75], 8
je 0x43639e
mov ebx, eax
mov eax, dword [eax + 0x124]
lea edx, [eax + 1]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
call fcn.00433090
mov edx, dword [ebx + 0x7c]
test dl, 0x20
je 0x4363a7
lea esi, [esi]
mov edi, dword [esp + 0x1c]
mov eax, dword [edi + 0x124]
mov dword [esp + 0x24], eax
add eax, 1
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.004427e0
mov edx, dword [edi + 0x7c]
test edx, 0x80000
je 0x4363b3
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
mov ecx, dword [eax + 0x124]
movzx ebx, byte [edi + 8]
mov esi, dword [edi]
mov byte [esp + 0x24], bl
lea eax, [ecx + 1]
cmp bl, 6
je 0x437478
cmp byte [esp + 0x24], 4
jne 0x4363b3
mov edi, dword [esp + 0x20]
mov ebx, dword [edi + 4]
add ebx, eax
cmp byte [edi + 9], 8
je 0x4378c0
test esi, esi
je 0x438f43
xor eax, eax
lea esi, [esi]
pcmpeqd xmm2, xmm2
pinsrw xmm0, word [ebx - 2], 0
add eax, 1
sub ebx, 4
pxor xmm2, xmm0
movd edx, xmm2
mov word [ebx + 2], dx
cmp esi, eax
jne 0x436908
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
test dl, 8
je 0x4363bc
lea esi, cs:[esi]
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
mov ecx, dword [eax + 0x124]
movzx ebx, byte [edi + 8]
mov esi, ecx
mov byte [esp + 0x24], bl
lea eax, [ecx + 1]
cmp bl, 3
je 0x436b70
movzx esi, byte [edi + 9]
mov ebx, esi
test byte [esp + 0x24], 2
jne 0x4372e8
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x28], 1
mov edx, esi
movzx edi, byte [edi + 0x1ac]
sub edx, edi
mov dword [esp + 0x5c], edx
test byte [esp + 0x24], 4
je 0x4369b5
mov edi, dword [esp + 0x1c]
movzx edx, byte [edi + 0x1ad]
mov edi, esi
sub edi, edx
mov edx, dword [esp + 0x28]
mov dword [esp + edx*4 + 0x5c], edi
lea edi, [edx + 1]
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x28]
mov dword [esp + 0x24], eax
lea edx, [esp + 0x5c]
xor ebp, ebp
lea edi, [edx + edi*4]
mov eax, dword [edx]
cmp esi, eax
jle 0x4369d4
test eax, eax
jg 0x437468
mov dword [edx], 0
add edx, 4
cmp edx, edi
jne 0x4369c6
mov eax, dword [esp + 0x24]
test ebp, ebp
je 0x4375e0
cmp bl, 8
je 0x438668
ja 0x438180
cmp bl, 2
je 0x437808
cmp bl, 4
jne 0x436a48
mov ecx, dword [esp + 0x20]
mov edx, 0xf
mov esi, dword [ecx + 4]
mov ecx, dword [esp + 0x5c]
sar edx, cl
add esi, eax
mov ebx, edx
shl ebx, 4
add ebx, edx
cmp eax, esi
jae 0x436a48
lea esi, [esi]
movzx edx, byte [eax]
add eax, 1
sar edx, cl
and edx, ebx
mov byte [eax - 1], dl
cmp esi, eax
jne 0x436a30
lea esi, [esi]
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
and edx, 4
je 0x4363c5
lea esi, cs:[esi]
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
mov esi, dword [eax + 0x124]
movzx ebx, byte [edi + 9]
lea eax, [esi + 1]
cmp bl, 7
ja 0x4363c5
mov ecx, dword [esp + 0x20]
mov edi, dword [ecx]
cmp bl, 2
je 0x4381d8
cmp bl, 4
je 0x438228
cmp bl, 1
jne 0x437440
lea ecx, [edi - 1]
mov edx, edi
shr ecx, 3
neg edx
add ecx, eax
and edx, 7
lea eax, [esi + edi]
test edi, edi
jne 0x436ace
jmp 0x437440
add edx, 1
sub eax, 1
cmp eax, esi
je 0x437440
movzx ebx, byte [ecx]
bt ebx, edx
setb bl
mov byte [eax], bl
cmp edx, 7
jne 0x436ac0
sub ecx, 1
xor edx, edx
jmp 0x436ac3
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0x124]
mov eax, dword [esp + 0x20]
cmp byte [eax + 9], 0x10
jne 0x436383
mov esi, dword [esp + 0x20]
lea ebx, [ecx + 1]
mov eax, dword [esi + 4]
add eax, ebx
cmp ebx, eax
jae 0x436b39
sub eax, ecx
lea ebx, [eax - 2]
xor eax, eax
shr ebx, 1
lea esi, [esi]
movzx edx, byte [ecx + eax*2 + 1]
mov byte [ecx + eax + 1], dl
mov edx, eax
add eax, 1
cmp edx, ebx
jne 0x436b20
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
mov esi, dword [esp + 0x20]
movzx eax, byte [esi + 0xa]
mov byte [esi + 9], 8
lea ecx, [eax*8]
mov byte [esi + 0xb], cl
mov ecx, dword [esi]
imul eax, ecx
mov dword [esi + 4], eax
test dl, 0x40
jne 0x438618
test dh, 2
je 0x436395
jmp 0x4365d3
and edx, 4
jne 0x4377f8
mov eax, dword [esp + 0x1c]
mov esi, dword [eax + 0x144]
test esi, esi
jns 0x437210
mov eax, dword [eax + 0x7c]
mov edx, eax
test al, 1
je 0x4363e4
mov edi, dword [esp + 0x1c]
mov eax, dword [edi + 0x124]
mov dword [esp + 0x24], eax
add eax, 1
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.00442b70
mov eax, dword [edi + 0x7c]
mov edx, eax
test eax, 0x10000
je 0x4363ef
mov esi, dword [esp + 0x1c]
mov eax, dword [esi + 0x124]
mov dword [esp + 0x24], eax
add eax, 1
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.004428e0
mov eax, dword [esi + 0x7c]
mov edx, eax
test ah, 0x80
je 0x4363f8
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov ebp, dword [esi + 0x124]
movzx ebx, word [esi + 0x15a]
mov edi, dword [esi + 0x78]
lea esi, [ebp + 1]
mov word [esp + 0x34], bx
mov dword [esp + 0x2c], esi
mov esi, dword [ecx]
mov byte [esp + 0x30], bl
mov dword [esp + 0x24], esi
movzx esi, bh
mov ecx, esi
mov byte [esp + 0x28], cl
mov ecx, dword [esp + 0x20]
movzx ebx, byte [ecx + 8]
test bl, bl
jne 0x437130
movzx eax, byte [ecx + 9]
cmp al, 8
je 0x4376d0
cmp al, 0x10
jne 0x436404
mov ebp, dword [esp + 0x24]
mov ecx, dword [esp + 0x2c]
mov ebx, edi
lea eax, [ebp + ebp]
add ecx, eax
add eax, ecx
and ebx, 0x80
je 0x438b60
cmp ebp, 1
jbe 0x4393e4
mov dword [esp + 0x2c], esi
movzx edi, byte [esp + 0x30]
mov edx, eax
mov ebx, 1
mov esi, dword [esp + 0x24]
mov ebp, eax
mov eax, edi
sub ecx, 2
sub edx, 4
add ebx, 1
mov byte [edx + 3], al
movzx eax, byte [esp + 0x28]
mov byte [edx + 2], al
movzx eax, byte [ecx + 1]
mov byte [edx + 1], al
movzx eax, byte [ecx]
mov byte [edx], al
cmp esi, ebx
jne 0x436c90
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x2c]
shl edx, 2
mov ecx, edx
neg ecx
lea eax, [ebp + ecx + 4]
movzx ebx, byte [esp + 0x34]
mov ebp, 0x2002
mov byte [eax - 1], bl
mov ebx, esi
mov byte [eax - 2], bl
mov eax, dword [esp + 0x20]
mov dword [eax + 4], edx
mov word [eax + 0xa], bp
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
jmp 0x4363f8
mov eax, dword [esp + 0x20]
movzx eax, byte [eax + 8]
mov byte [esp + 0x24], al
and eax, 0xfffffffd
cmp al, 4
jne 0x436332
mov esi, dword [esp + 0x1c]
mov dword [esp + 8], 0
mov eax, dword [esi + 0x124]
mov dword [esp + 0x24], eax
add eax, 1
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.00442950
mov edx, dword [esi + 0x7c]
test edx, 0x600000
je 0x43633e
lea esi, cs:[esi]
nop
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0x124]
mov eax, dword [esp + 0x20]
movzx ebp, byte [eax + 8]
mov eax, ebp
and eax, 3
cmp al, 2
jne 0x43633e
mov eax, dword [esp + 0x1c]
lea esi, [ecx + 1]
mov ecx, dword [esp + 0x20]
movzx ebx, word [eax + 0x24a]
movzx eax, word [eax + 0x24c]
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], eax
add eax, ebx
mov ebx, 0x8000
sub ebx, eax
mov eax, dword [ecx]
movzx ecx, byte [ecx + 9]
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x24], eax
mov eax, ebp
and eax, 4
mov byte [esp + 0x28], al
cmp cl, 8
je 0x438420
mov eax, dword [ebx + 0x1a0]
mov dword [esp + 0x40], eax
test eax, eax
je 0x437c80
mov eax, dword [ebx + 0x19c]
mov dword [esp + 0x4c], eax
test eax, eax
je 0x437c80
mov eax, dword [esp + 0x24]
test eax, eax
je 0x43918c
mov dword [esp + 0x3c], 0
mov ebp, esi
mov dword [esp + 0x2c], 0
jmp 0x436e21
add esi, 6
add ebp, 2
add dword [esp + 0x2c], 1
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x24], eax
je 0x4380d0
movzx ecx, word [esi]
movzx edx, word [esi + 2]
movzx ebx, word [esi + 4]
mov eax, ecx
movzx edi, cl
mov word [esp + 0x46], di
rol ax, 8
cmp dx, cx
jne 0x438030
cmp bx, cx
jne 0x438030
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx + 0x190]
test edx, edx
je 0x436e6c
mov ecx, dword [ecx + 0x184]
movzx eax, al
sar eax, cl
mov eax, dword [edx + eax*4]
movzx eax, word [eax + edi*2]
rol ax, 8
cmp byte [esp + 0x28], 0
mov word [ebp], ax
je 0x436e08
movzx eax, byte [esi + 6]
add ebp, 4
add esi, 8
mov byte [ebp - 2], al
movzx eax, byte [esi - 1]
mov byte [ebp - 1], al
jmp 0x436e0e
mov edi, dword [esp + 0x1c]
mov eax, dword [edi + 0x124]
mov dword [esp + 0x24], eax
add eax, 1
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.004428a0
mov edx, dword [edi + 0x7c]
jmp 0x43640d
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov edi, dword [esi]
mov eax, dword [eax + 0x124]
movzx ecx, byte [esi + 8]
mov dword [esp + 0x24], eax
add eax, 1
mov dword [esp + 0x30], edi
cmp cl, 6
je 0x437230
cmp cl, 4
jne 0x436404
mov esi, dword [esp + 0x20]
add eax, dword [esi + 4]
cmp byte [esi + 9], 8
je 0x437890
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x436404
mov dword [esp + 0x24], ecx
xor esi, esi
lea esi, [esi]
movzx edi, byte [eax - 1]
movzx ebx, byte [eax - 2]
sub eax, 4
add esi, 1
movzx edx, byte [eax + 1]
movzx ebp, byte [eax]
shl edx, 8
or edx, ebp
shl edx, 8
or edx, edi
shl edx, 8
or edx, ebx
mov dword [eax], edx
cmp dword [esp + 0x24], esi
jne 0x436f20
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
jmp 0x436404
movzx eax, al
imul eax, edx
add eax, 7
shr eax, 3
jmp 0x43648b
mov ebx, dword [esp + 0x20]
mov byte [ebx + 0xa], dl
jmp 0x43646e
mov esi, dword [esp + 0x20]
mov byte [esi + 9], al
jmp 0x436456
mov eax, dword [esp + 0x24]
test eax, eax
je case.0x437612.0
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x24]
movzx edx, word [ebx + 0x1bc]
lea ecx, [ecx + eax + 1]
lea esi, cs:[esi]
movzx eax, byte [esi]
cmp ax, dx
jne 0x436fc9
movzx eax, word [ebx + 0x16c]
mov byte [esi], al
add esi, 1
cmp esi, ecx
jne 0x436fb8
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
mov eax, edx
and eax, 0x602000
cmp eax, 0x2000
jne 0x4370c7
and edx, 0x80
jne 0x4379f8
lea esi, [esi]
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + 0x14f]
cmp al, 3
je 0x4370c0
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0x124]
mov edx, dword [eax + 0x18c]
mov ebx, dword [eax + 0x190]
mov edi, dword [eax + 0x184]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x28], edx
lea esi, [ecx + 1]
mov ebp, dword [eax]
movzx eax, byte [eax + 9]
mov dword [esp + 0x24], ebp
cmp al, 8
ja 0x437750
test edx, edx
je 0x4370c0
mov edx, dword [esp + 0x20]
movzx edx, byte [edx + 8]
cmp dl, 2
je 0x438fa6
jbe 0x438da4
cmp dl, 4
je 0x439063
cmp dl, 6
jne 0x4370c0
cmp al, 8
jne 0x438ffc
mov ebx, dword [esp + 0x24]
test ebx, ebx
je 0x4393c9
mov eax, dword [esp + 0x28]
xor edx, edx
lea esi, cs:[esi]
nop
movzx ecx, byte [esi]
add edx, 1
add esi, 4
movzx ecx, byte [eax + ecx]
mov byte [esi - 4], cl
movzx ecx, byte [esi - 3]
movzx ecx, byte [eax + ecx]
mov byte [esi - 3], cl
movzx ecx, byte [esi - 2]
movzx ecx, byte [eax + ecx]
mov byte [esi - 2], cl
cmp ebx, edx
jne 0x437090
lea esi, [esi]
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
mov eax, edx
not eax
test eax, 0x40080
jne 0x436362
mov eax, dword [esp + 0x20]
movzx eax, byte [eax + 8]
mov byte [esp + 0x24], al
and eax, 0xfffffffd
cmp al, 4
jne 0x436362
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0x124]
lea eax, [ecx + 1]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.00442950
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
test edx, 0x800000
je 0x43636e
jmp 0x4364b0
cmp bl, 2
jne 0x4363f8
mov ecx, dword [esp + 0x20]
movzx ebx, byte [ecx + 9]
cmp bl, 8
je 0x437bf0
cmp bl, 0x10
jne 0x436404
mov ebp, dword [esp + 0x24]
mov ecx, dword [esp + 0x2c]
lea edx, [ebp + ebp]
lea ebx, [edx + ebp]
lea ecx, [ecx + ebx*2]
mov ebx, edi
add edx, ecx
and ebx, 0x80
je 0x43910c
cmp ebp, 1
jbe 0x4371e0
mov dword [esp + 0x2c], esi
movzx edi, byte [esp + 0x30]
mov eax, edx
mov ebx, 1
mov esi, dword [esp + 0x24]
mov ebp, edx
mov edx, edi
sub ecx, 6
sub eax, 8
add ebx, 1
mov byte [eax + 7], dl
movzx edx, byte [esp + 0x28]
mov byte [eax + 6], dl
movzx edx, byte [ecx + 5]
mov byte [eax + 5], dl
movzx edx, byte [ecx + 4]
mov byte [eax + 4], dl
movzx edx, byte [ecx + 3]
mov byte [eax + 3], dl
movzx edx, byte [ecx + 2]
mov byte [eax + 2], dl
movzx edx, byte [ecx + 1]
mov byte [eax + 1], dl
movzx edx, byte [ecx]
mov byte [eax], dl
cmp esi, ebx
jne 0x437190
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x2c]
neg eax
lea edx, [ebp + eax*8 + 8]
movzx eax, byte [esp + 0x34]
mov edi, 0x4004
mov byte [edx - 1], al
mov eax, esi
mov esi, dword [esp + 0x20]
mov byte [edx - 2], al
mov eax, dword [esp + 0x24]
mov word [esi + 0xa], di
shl eax, 3
mov dword [esi + 4], eax
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
jmp 0x4363f8
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.00442c60
mov eax, esi
mov eax, dword [eax + 0x7c]
mov edx, eax
jmp 0x436b90
mov ebx, esi
add eax, dword [esi + 4]
cmp byte [ebx + 9], 8
mov esi, eax
je 0x438558
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x436404
mov dword [esp + 0x24], 0
lea esi, [esi]
movzx ecx, byte [esi - 5]
movzx edx, byte [esi - 1]
sub esi, 8
movzx ebx, byte [esi + 6]
movzx edi, byte [esi + 4]
mov byte [esp + 0x28], cl
movzx ecx, byte [esi + 2]
movzx eax, byte [esi + 5]
add dword [esp + 0x24], 1
mov byte [esp + 0x2c], cl
movzx ecx, byte [esi + 1]
movzx ebp, byte [esi]
shl eax, 8
shl ecx, 8
or ecx, ebp
movzx ebp, dl
mov edx, ecx
movzx ecx, byte [esp + 0x28]
shl edx, 8
or edx, ebp
movzx ebp, bl
mov ebx, edi
movzx edi, bl
shl edx, 8
or eax, edi
movzx edi, byte [esp + 0x2c]
or edx, ebp
shl eax, 8
mov dword [esi], edx
or eax, ecx
shl eax, 8
or eax, edi
mov dword [esi + 4], eax
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x30], eax
jne 0x437258
jmp 0x436f4c
test dl, 8
je 0x4363bc
mov esi, dword [esp + 0x20]
movzx esi, byte [esi + 9]
mov ebx, esi
lea esi, cs:[esi]
mov ebp, dword [esp + 0x1c]
mov edx, esi
mov dword [esp + 0x28], 3
movzx edi, byte [ebp + 0x1a9]
movzx ebp, byte [ebp + 0x1aa]
sub edx, edi
mov edi, esi
sub edi, ebp
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x60], edi
mov edi, esi
movzx ebp, byte [ebp + 0x1ab]
sub edi, ebp
mov dword [esp + 0x64], edi
jmp 0x43698c
cmp al, 6
jne case.0x437612.0
mov eax, dword [esp + 0x20]
cmp byte [eax + 9], 8
je 0x437a28
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x38]
test eax, eax
setne cl
test edi, edi
setne al
test cl, al
je 0x4386b0
test ebx, ebx
je 0x4386b0
mov eax, dword [esp + 0x24]
test eax, eax
je case.0x437612.0
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x3c], ebx
xor edx, edx
jmp 0x4373ca
test ax, ax
jne 0x4382e0
movzx eax, word [edi + 0x166]
movzx ebx, word [edi + 0x16a]
mov byte [esi], ah
mov byte [esi + 1], al
movzx eax, word [edi + 0x168]
mov byte [esi + 2], ah
mov byte [esi + 3], al
movzx eax, bh
mov byte [esi + 4], al
add edx, 1
add esi, 8
mov byte [esi - 3], bl
cmp dword [esp + 0x24], edx
je 0x436fd0
movzx eax, word [esi + 6]
cmp ax, 0xffff
jne 0x437388
movzx eax, byte [esi + 1]
mov ebp, dword [esp + 0x28]
movzx ebx, byte [esi]
sar eax, cl
mov eax, dword [ebp + eax*4]
movzx eax, word [eax + ebx*2]
movzx ebx, byte [esi + 2]
mov byte [esi], ah
mov byte [esi + 1], al
movzx eax, byte [esi + 3]
sar eax, cl
mov eax, dword [ebp + eax*4]
movzx eax, word [eax + ebx*2]
movzx ebx, byte [esi + 4]
mov byte [esi + 2], ah
mov byte [esi + 3], al
movzx eax, byte [esi + 5]
sar eax, cl
mov eax, dword [ebp + eax*4]
movzx ebx, word [eax + ebx*2]
movzx eax, bh
jmp 0x4373b4
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
lea ecx, [esi + 0x1b4]
call fcn.00433270
mov edx, dword [esi + 0x7c]
jmp 0x436320
mov esi, dword [esp + 0x20]
movzx eax, byte [esi + 0xa]
mov byte [esi + 9], 8
lea edx, [eax*8]
imul eax, edi
mov byte [esi + 0xb], dl
mov dword [esi + 4], eax
jmp 0x4363c5
mov ebp, 1
jmp 0x4369da
mov ebx, dword [edi + 4]
add ebx, eax
cmp byte [edi + 9], 8
je 0x4385a0
test esi, esi
je 0x4372d0
xor eax, eax
lea esi, [esi]
pcmpeqd xmm1, xmm1
pinsrw xmm0, word [ebx - 2], 0
add eax, 1
sub ebx, 8
pxor xmm1, xmm0
movd edx, xmm1
mov word [ebx + 6], dx
cmp esi, eax
jne 0x437498
jmp 0x436928
mov eax, dword [esp + 0x1c]
mov esi, dword [eax + 0x1b0]
mov dword [esp + 0x2c], esi
mov esi, dword [eax + 0x13c]
mov eax, dword [esp + 0x20]
movzx edi, byte [eax + 9]
mov ebp, dword [eax]
mov eax, edi
mov dword [esp + 0x28], ebp
cmp al, 7
ja 0x438890
lea eax, [ecx + ebp]
mov dword [esp + 0x30], eax
mov eax, edi
cmp al, 2
je 0x437d45
cmp al, 4
je 0x439201
cmp al, 1
jne 0x438bc2
lea edx, [ebp - 1]
lea eax, [ebp + 7]
mov edi, dword [esp + 0x24]
shr edx, 3
not eax
add edi, edx
mov edx, eax
mov eax, dword [esp + 0x28]
and edx, 7
mov ebp, edx
mov edx, dword [esp + 0x30]
test eax, eax
je 0x438bc2
mov eax, ecx
mov ecx, ebp
mov ebp, eax
jmp 0x43754e
add ecx, 1
sub edx, 1
cmp ebp, edx
je 0x438bc0
movzx eax, byte [edi]
sar eax, cl
and eax, 1
mov byte [edx], al
cmp ecx, 7
jne 0x437540
sub edi, 1
xor ecx, ecx
jmp 0x437543
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov ebx, dword [eax + 0x208]
mov esi, dword [eax + 0x204]
mov eax, dword [eax + 0x124]
mov ecx, dword [ecx]
mov dword [esp + 0x24], eax
add eax, 1
mov edi, dword [esp + 0x20]
movzx edx, byte [edi + 8]
cmp dl, 2
je 0x438500
cmp dl, 6
je 0x4378e8
test ebx, ebx
je 0x4365a6
cmp dl, 3
jne 0x4365a6
test ecx, ecx
je 0x4365a6
add ecx, eax
movzx edx, byte [eax]
add eax, 1
movzx edx, byte [ebx + edx]
mov byte [eax - 1], dl
cmp eax, ecx
jne 0x4375c0
jmp 0x4365a6
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x7c]
mov edx, eax
test al, 4
je 0x4363dc
mov esi, ecx
lea eax, [ecx + 1]
jmp 0x436a75
mov eax, dword [esp + 0x20]
cmp byte [eax + 9], 0x10
ja case.0x437612.0
movzx eax, byte [eax + 9]
jmp dword [eax*4 + 0x48d378]
mov eax, dword [esp + 0x20]
cmp byte [eax + 9], 8
je 0x437b70
mov eax, dword [esp + 0x28]
test eax, eax
mov eax, dword [esp + 0x38]
setne cl
test eax, eax
setne al
test cl, al
je 0x4387e0
test ebx, ebx
je 0x4387e0
mov edi, dword [esp + 0x24]
test edi, edi
je case.0x437612.0
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x3c], ebx
xor edx, edx
mov ebp, 0xffff
mov dword [esp + 0x30], eax
jmp 0x4376a4
test ax, ax
jne 0x438270
mov eax, dword [esp + 0x30]
movzx ecx, word [eax + 0x16c]
movzx eax, ch
mov byte [esi], al
add edx, 1
add esi, 4
mov byte [esi - 3], cl
cmp dword [esp + 0x24], edx
je 0x436fd0
movzx eax, word [esi + 2]
cmp ax, 0xffff
jne 0x437678
movzx ecx, byte [esp + 0x34]
movzx eax, byte [esi + 1]
mov ebx, dword [esp + 0x28]
sar eax, cl
movzx ecx, byte [esi]
mov eax, dword [ebx + eax*4]
movzx ecx, word [eax + ecx*2]
movzx eax, ch
jmp 0x43768f
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x2c]
add eax, ecx
and edi, 0x80
lea esi, [eax + ecx]
je 0x437840
cmp ecx, 1
jbe 0x43771c
lea ebx, [ebp + 2]
mov edx, esi
mov edi, ebx
movzx ebx, byte [esp + 0x30]
lea esi, [esi]
sub eax, 1
mov byte [edx - 1], bl
sub edx, 2
movzx ecx, byte [eax]
mov byte [edx], cl
cmp eax, edi
jne 0x437700
mov eax, dword [esp + 0x24]
neg eax
lea esi, [esi + eax*2 + 2]
movzx eax, byte [esp + 0x34]
mov ebx, 0x1002
mov byte [esi - 1], al
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
add eax, eax
mov dword [esi + 4], eax
mov eax, dword [esp + 0x1c]
mov word [esi + 0xa], bx
mov edx, dword [eax + 0x7c]
jmp 0x4363f8
test ebx, ebx
je 0x4370c0
cmp al, 0x10
jne 0x4370c0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax + 8]
cmp al, 4
je 0x438f5b
ja 0x438ff4
test al, al
je 0x43940a
cmp al, 2
jne 0x4370c0
mov eax, dword [esp + 0x24]
xor edx, edx
test eax, eax
je 0x437112
mov ebp, dword [esp + 0x24]
mov ecx, edi
lea esi, [esi]
movzx eax, byte [esi + 1]
movzx edi, byte [esi]
add edx, 1
add esi, 6
sar eax, cl
mov eax, dword [ebx + eax*4]
movzx eax, word [eax + edi*2]
movzx edi, byte [esi - 4]
mov byte [esi - 6], ah
mov byte [esi - 5], al
movzx eax, byte [esi - 3]
sar eax, cl
mov eax, dword [ebx + eax*4]
movzx eax, word [eax + edi*2]
movzx edi, byte [esi - 2]
mov byte [esi - 4], ah
mov byte [esi - 3], al
movzx eax, byte [esi - 1]
sar eax, cl
mov eax, dword [ebx + eax*4]
movzx eax, word [eax + edi*2]
mov byte [esi - 2], ah
mov byte [esi - 1], al
cmp ebp, edx
jne 0x4377a0
jmp 0x4370c0
mov ecx, dword [esp + 0x20]
movzx ebx, byte [ecx + 9]
jmp 0x436a75
mov esi, dword [esp + 0x20]
mov ecx, dword [esi + 4]
add ecx, eax
cmp eax, ecx
jae 0x436a48
lea esi, [esi]
movzx edx, byte [eax]
add eax, 1
shr dl, 1
and edx, 0x55
mov byte [eax - 1], dl
cmp ecx, eax
jne 0x437820
jmp 0x436a48
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x437871
mov ecx, dword [esp + 0x2c]
movzx ebx, byte [esp + 0x30]
lea esi, [esi]
sub eax, 1
movzx edx, bl
sub esi, 2
mov dh, byte [eax]
mov word [esi], dx
cmp ecx, eax
jne 0x437858
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
mov esi, dword [esp + 0x20]
mov eax, 0x1002
mov word [esi + 0xa], ax
mov eax, dword [esp + 0x24]
add eax, eax
mov dword [esi + 4], eax
jmp 0x4363f8
mov esi, dword [esp + 0x30]
test esi, esi
je 0x436404
xor ecx, ecx
nop
movzx ebx, byte [eax - 1]
sub eax, 2
add ecx, 1
movzx edx, bl
mov dh, byte [eax]
mov word [eax], dx
cmp esi, ecx
jne 0x4378a0
jmp 0x436f4c
test esi, esi
je 0x438f43
xor eax, eax
lea esi, [esi]
add eax, 1
not byte [ebx - 1]
sub ebx, 2
cmp esi, eax
jne 0x4378d0
jmp 0x436928
test esi, esi
je 0x4365a6
xor ebx, ebx
test ecx, ecx
je 0x43792f
lea esi, cs:[esi]
nop
movzx edx, byte [eax + ebx*4]
movzx edi, byte [eax + ebx*4 + 1]
sar edx, 3
sar edi, 3
shl edi, 5
shl edx, 0xa
or edx, edi
movzx edi, byte [eax + ebx*4 + 2]
sar edi, 3
or edx, edi
movzx edx, byte [esi + edx]
mov byte [eax + ebx], dl
add ebx, 1
cmp ebx, ecx
jne 0x437900
mov esi, dword [esp + 0x20]
movzx eax, byte [esi + 9]
mov byte [esi + 8], 3
mov byte [esi + 0xa], 1
mov byte [esi + 0xb], al
cmp al, 7
jbe 0x438878
shr al, 3
movzx eax, al
imul eax, ecx
mov esi, dword [esp + 0x20]
mov dword [esi + 4], eax
jmp 0x4365ad
mov edi, dword [esp + 0x1c]
mov ebp, dword [edi + 0x19c]
test ebp, ebp
je 0x4364ea
and esi, 2
mov edi, dword [edi + 0x184]
mov ebx, esi
cmp bl, 1
sbb ebx, ebx
and ebx, 0xfffffffc
mov dword [esp + 0x24], ebx
mov ebx, esi
cmp bl, 1
mov ebx, dword [esp + 0x24]
sbb esi, esi
and esi, 0xfffffffc
lea ebx, [ecx + ebx + 7]
add esi, 8
test eax, eax
je 0x4393f0
mov ecx, edi
lea esi, cs:[esi]
movzx edx, byte [ebx + 1]
movzx edi, byte [ebx]
sar edx, cl
mov edx, dword [ebp + edx*4]
movzx edx, word [edx + edi*2]
mov byte [ebx], dh
mov byte [ebx + 1], dl
add ebx, esi
sub eax, 1
jne 0x4379b0
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
jmp 0x43636e
mov eax, edx
and eax, 0x602000
cmp eax, 0x2000
jne 0x4370c7
lea esi, [esi]
mov eax, dword [esp + 0x1c]
cmp word [eax + 0x148], 0
jne 0x4370c0
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + 0x14f]
test al, 4
jne 0x4370c0
jmp 0x437003
mov eax, dword [esp + 0x3c]
test ebp, ebp
setne cl
test eax, eax
setne al
test cl, al
je 0x438be0
mov eax, dword [esp + 0x30]
test eax, eax
je 0x438be0
mov eax, dword [esp + 0x24]
test eax, eax
je case.0x437612.0
mov dword [esp + 0x34], ebp
xor ecx, ecx
mov ebp, dword [esp + 0x1c]
jmp 0x437a95
test dl, dl
jne 0x4389e0
movzx eax, word [ebp + 0x166]
movzx edx, byte [ebp + 0x16a]
mov byte [esi], al
movzx eax, word [ebp + 0x168]
mov byte [esi + 1], al
mov byte [esi + 2], dl
add ecx, 1
add esi, 4
cmp dword [esp + 0x24], ecx
je 0x436fd0
movzx edx, byte [esi + 3]
cmp dl, 0xff
jne 0x437a60
mov ebx, dword [esp + 0x30]
movzx eax, byte [esi]
movzx eax, byte [ebx + eax]
mov byte [esi], al
movzx eax, byte [esi + 1]
movzx eax, byte [ebx + eax]
mov byte [esi + 1], al
movzx eax, byte [esi + 2]
movzx edx, byte [ebx + eax]
jmp 0x437a82
mov edi, dword [esp + 0x30]
test edi, edi
je 0x439099
mov eax, dword [esp + 0x24]
test eax, eax
je case.0x437612.0
mov ebx, dword [esp + 0x1c]
lea eax, [eax + eax*2 + 1]
lea ebp, [ecx + eax]
movzx edi, word [ebx + 0x1b6]
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x28], ebp
mov word [esp + 0x24], di
jmp 0x437b23
movzx eax, byte [ebx + eax]
mov byte [esi], al
movzx eax, byte [ebx + edx]
mov byte [esi + 1], al
movzx eax, byte [ebx + ecx]
mov byte [esi + 2], al
mov eax, dword [esp + 0x28]
add esi, 3
cmp esi, eax
je 0x436fd0
movzx edi, byte [esi]
movzx edx, byte [esi + 1]
movzx ecx, byte [esi + 2]
mov eax, edi
cmp di, word [esp + 0x24]
jne 0x437b00
mov ebp, dword [esp + 0x1c]
movzx edi, dl
cmp di, word [ebp + 0x1b8]
jne 0x437b00
movzx edi, cl
cmp di, word [ebp + 0x1ba]
jne 0x437b00
movzx eax, word [ebp + 0x166]
mov byte [esi], al
movzx eax, word [ebp + 0x168]
mov byte [esi + 1], al
movzx eax, byte [ebp + 0x16a]
jmp 0x437b11
mov eax, dword [esp + 0x3c]
test ebp, ebp
setne bl
test eax, eax
setne al
test bl, al
je 0x438cb0
mov eax, dword [esp + 0x30]
test eax, eax
je 0x438cb0
mov edi, dword [esp + 0x24]
test edi, edi
je case.0x437612.0
mov dword [esp + 0x24], ebp
xor edx, edx
jmp 0x437bd3
test bx, bx
jne 0x438990
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + 0x16c]
mov byte [ecx + edx*2 + 1], al
add edx, 1
cmp edi, edx
je 0x436fd0
movzx ebx, byte [ecx + edx*2 + 2]
mov eax, ebx
cmp bx, 0xff
jne 0x437bb0
movzx eax, byte [ecx + edx*2 + 1]
mov ebx, dword [esp + 0x30]
movzx eax, byte [ebx + eax]
jmp 0x437bc4
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x2c]
lea eax, [ecx + ecx*2]
add eax, esi
and edi, 0x80
lea esi, [eax + ecx]
je 0x438eee
cmp ecx, 1
jbe 0x439456
lea ecx, [ebp + 4]
mov edx, esi
mov edi, ecx
movzx ecx, byte [esp + 0x30]
lea esi, [esi]
mov byte [edx - 1], cl
movzx ebx, byte [eax - 1]
sub eax, 3
sub edx, 4
mov byte [edx + 2], bl
movzx ebx, byte [eax + 1]
mov byte [edx + 1], bl
movzx ebx, byte [eax]
mov byte [edx], bl
cmp eax, edi
jne 0x437c28
mov edx, dword [esp + 0x24]
shl edx, 2
mov eax, edx
neg eax
lea esi, [esi + eax + 4]
movzx eax, byte [esp + 0x34]
mov ebx, 0x2004
mov byte [esi - 1], al
mov eax, dword [esp + 0x20]
mov dword [eax + 4], edx
mov word [eax + 0xa], bx
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
jmp 0x4363f8
mov eax, dword [esp + 0x24]
mov dword [esp + 0x3c], 0
mov ebx, esi
xor edi, edi
test eax, eax
je 0x4380e3
mov ebp, ebx
jmp 0x437cb3
add esi, 6
add ebp, 2
add edi, 1
cmp dword [esp + 0x24], edi
je 0x4380d0
movzx edx, word [esi + 2]
movzx eax, word [esi + 4]
movzx ebx, word [esi]
rol dx, 8
mov word [esp + 0x40], dx
mov edx, eax
mov ecx, ebx
rol dx, 8
rol cx, 8
mov word [esp + 0x2c], dx
cmp word [esi + 2], bx
jne 0x438020
cmp ax, bx
jne 0x438020
mov eax, dword [esp + 0x30]
movzx ecx, cx
movzx edx, word [esp + 0x40]
mov ebx, dword [esp + 0x38]
imul ecx, eax
mov eax, dword [esp + 0x34]
imul edx, eax
movzx eax, word [esp + 0x2c]
imul eax, ebx
lea edx, [ecx + edx + 0x4000]
add edx, eax
shr edx, 0xf
rol dx, 8
cmp byte [esp + 0x28], 0
mov word [ebp], dx
je 0x437ca0
movzx eax, byte [esi + 6]
add ebp, 4
add esi, 8
mov byte [ebp - 2], al
movzx eax, byte [esi - 1]
mov byte [ebp - 1], al
jmp 0x437ca6
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
lea edx, [eax - 1]
shr edx, 2
add edi, edx
mov edx, eax
neg eax
add eax, eax
and eax, 6
mov ebp, eax
test edx, edx
je 0x438bc2
mov eax, ecx
mov edx, dword [esp + 0x30]
mov ecx, ebp
mov ebp, eax
jmp 0x437d86
add ecx, 2
sub edx, 1
cmp ebp, edx
je 0x438bc0
movzx eax, byte [edi]
sar eax, cl
and eax, 3
mov byte [edx], al
cmp ecx, 6
jne 0x437d78
sub edi, 1
xor ecx, ecx
jmp 0x437d7b
mov eax, dword [esp + 0x30]
test eax, eax
je 0x436f94
mov eax, dword [esp + 0x24]
test eax, eax
je case.0x437612.0
mov ebp, dword [esp + 0x1c]
lea ebx, [ecx + eax + 1]
mov edx, dword [esp + 0x30]
movzx edi, word [ebp + 0x1bc]
mov ecx, ebp
jmp 0x437de1
movzx eax, byte [edx + ebp]
mov byte [esi], al
add esi, 1
cmp esi, ebx
je 0x436fd0
movzx ebp, byte [esi]
cmp bp, di
jne 0x437dd0
movzx eax, byte [ecx + 0x16c]
jmp 0x437dd4
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x4392fc
mov eax, dword [esp + 0x24]
test eax, eax
je case.0x437612.0
mov eax, dword [esp + 0x1c]
xor ebp, ebp
mov edx, 4
movzx eax, word [eax + 0x1bc]
mov dword [esp + 0x28], eax
jmp 0x437e3d
add esi, 1
mov edx, 4
add ebp, 1
cmp dword [esp + 0x24], ebp
je 0x436fd0
movzx eax, byte [esi]
mov ecx, edx
mov edi, 0xf0f
mov ebx, eax
sar ebx, cl
mov ecx, 4
sub ecx, edx
and ebx, 0xf
sar edi, cl
mov ecx, dword [esp + 0x28]
and eax, edi
cmp ebx, ecx
je 0x438958
mov ecx, ebx
shl ecx, 4
add ecx, ebx
mov ebx, dword [esp + 0x30]
movzx ebx, byte [ebx + ecx]
mov ecx, edx
shr bl, 4
movzx ebx, bl
shl ebx, cl
or eax, ebx
mov byte [esi], al
test edx, edx
je 0x437e28
sub edx, 4
jmp 0x437e30
mov ebp, dword [esp + 0x30]
test ebp, ebp
je 0x439278
mov ebx, dword [esp + 0x24]
test ebx, ebx
je case.0x437612.0
mov eax, dword [esp + 0x1c]
xor ebp, ebp
mov ebx, 6
movzx eax, word [eax + 0x1bc]
mov dword [esp + 0x28], eax
jmp 0x437ed5
add esi, 1
mov ebx, 6
add ebp, 1
cmp dword [esp + 0x24], ebp
je 0x436fd0
movzx eax, byte [esi]
mov ecx, ebx
mov edi, 0x3f3f
mov edx, eax
sar edx, cl
mov ecx, 6
sub ecx, ebx
and edx, 3
sar edi, cl
mov ecx, dword [esp + 0x28]
and eax, edi
cmp edx, ecx
je 0x438970
imul edx, edx, 0x55
mov ecx, dword [esp + 0x30]
movzx edx, byte [ecx + edx]
mov ecx, ebx
shr dl, 6
movzx edx, dl
shl edx, cl
or eax, edx
mov byte [esi], al
test ebx, ebx
je 0x437ec0
sub ebx, 2
jmp 0x437ec8
mov eax, dword [esp + 0x24]
test eax, eax
je case.0x437612.0
mov eax, dword [esp + 0x1c]
xor edx, edx
mov edi, 7
movzx ebp, word [eax + 0x1bc]
mov eax, 7
mov dword [esp + 0x28], ebp
jmp 0x437f65
add esi, 1
mov eax, 7
add edx, 1
cmp dword [esp + 0x24], edx
je 0x436fd0
movzx ebp, byte [esi]
mov ecx, eax
mov ebx, ebp
sar ebx, cl
mov ecx, ebx
mov ebx, dword [esp + 0x28]
and ecx, 1
cmp ecx, ebx
jne 0x437f9b
mov ecx, edi
mov ebx, 0x7f7f
sub ecx, eax
sar ebx, cl
mov ecx, dword [esp + 0x1c]
and ebx, ebp
movzx ebp, word [ecx + 0x16c]
mov ecx, eax
shl ebp, cl
or ebx, ebp
mov byte [esi], bl
test eax, eax
je 0x437f50
sub eax, 1
jmp 0x437f58
mov eax, dword [esp + 0x28]
test eax, eax
je 0x43937c
mov ebp, dword [esp + 0x24]
test ebp, ebp
je case.0x437612.0
mov eax, dword [esp + 0x1c]
xor edx, edx
movzx edi, word [eax + 0x1bc]
jmp 0x437ff9
movzx ecx, byte [esp + 0x34]
sar eax, cl
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx + eax*4]
movzx eax, word [eax + ebx*2]
movzx ecx, ah
add edx, 1
mov byte [esi + 1], al
add esi, 2
mov byte [esi - 2], cl
cmp ebp, edx
je 0x436fd0
movzx ecx, word [esi]
movzx ebx, byte [esi]
movzx eax, byte [esi + 1]
rol cx, 8
cmp cx, di
jne 0x437fd0
mov eax, dword [esp + 0x1c]
movzx eax, word [eax + 0x16c]
movzx ecx, ah
jmp 0x437fe5
mov dword [esp + 0x3c], 1
jmp 0x437ceb
mov ecx, dword [esp + 0x1c]
movzx edi, dh
movzx eax, al
mov ecx, dword [ecx + 0x184]
sar edi, cl
sar eax, cl
mov dword [esp + 0x3c], edi
movzx edi, dl
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x48], edi
mov edi, dword [esp + 0x40]
mov edx, dword [edi + edx*4]
mov edi, dword [esp + 0x48]
movzx edx, word [edx + edi*2]
mov edi, dword [esp + 0x34]
imul edx, edi
movzx edi, word [esp + 0x46]
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x40]
mov eax, dword [edi + eax*4]
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x3c], 1
movzx eax, word [eax + edi*2]
mov edi, dword [esp + 0x30]
imul eax, edi
mov edi, dword [esp + 0x40]
lea eax, [edx + eax + 0x4000]
movzx edx, bh
movzx ebx, bl
sar edx, cl
mov edx, dword [edi + edx*4]
movzx edx, word [edx + ebx*2]
mov ebx, dword [esp + 0x38]
imul edx, ebx
add eax, edx
shr eax, 0xf
movzx edx, al
movzx eax, ah
sar edx, cl
mov ecx, dword [esp + 0x4c]
mov edx, dword [ecx + edx*4]
movzx eax, word [edx + eax*2]
jmp 0x436e6c
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
mov eax, dword [esp + 0x20]
movzx ebp, byte [eax + 8]
movzx ecx, byte [eax + 9]
mov esi, dword [esp + 0x20]
mov ebx, ebp
and ebx, 0xfffffffd
movzx eax, byte [esi + 0xa]
mov byte [esi + 8], bl
mov byte [esp + 0x28], al
sub eax, 2
mov byte [esi + 0xa], al
imul eax, ecx
mov byte [esi + 0xb], al
cmp al, 7
jbe 0x438168
mov esi, dword [esp + 0x24]
shr al, 3
movzx eax, al
imul eax, esi
mov esi, dword [esp + 0x20]
mov dword [esi + 4], eax
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x43633e
mov eax, dword [esp + 0x1c]
mov byte [eax + 0x248], 1
mov eax, edx
and eax, 0x600000
cmp eax, 0x400000
je 0x438640
cmp eax, 0x200000
jne 0x43633e
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], str.png_do_rgb_to_gray_found_nongray_pixel
mov dword [esp], eax
call fcn.0042b7c0
lea esi, cs:[esi]
mov esi, dword [esp + 0x24]
movzx eax, al
imul eax, esi
add eax, 7
shr eax, 3
jmp 0x438114
cmp bl, 0x10
jne 0x436a48
mov ecx, dword [esp + 0x20]
mov esi, dword [ecx + 4]
add esi, eax
cmp eax, esi
jae 0x436a48
mov ebp, dword [esp + 0x28]
xor ebx, ebx
xor edi, edi
lea esi, [esi]
movzx edx, word [eax]
mov ecx, dword [esp + ebx*4 + 0x5c]
add ebx, 1
rol dx, 8
movzx edx, dx
sar edx, cl
cmp ebp, ebx
mov byte [eax], dh
cmovle ebx, edi
add eax, 2
mov byte [eax - 1], dl
cmp eax, esi
jb 0x4381a8
jmp 0x436a48
mov ecx, 0xfffffffc
lea edx, [edi - 1]
lea ebx, [esi + edi]
sub ecx, edi
shr edx, 2
add ecx, ecx
add edx, eax
and ecx, 6
test edi, edi
jne 0x43820e
jmp 0x437440
add ecx, 2
sub ebx, 1
cmp ebx, esi
je 0x437440
movzx eax, byte [edx]
sar eax, cl
and eax, 3
mov byte [ebx], al
cmp ecx, 6
jne 0x438200
sub edx, 1
xor ecx, ecx
jmp 0x438203
lea ebx, [edi - 1]
mov ecx, edi
lea edx, [esi + edi]
shr ebx, 1
and ecx, 1
add ebx, eax
shl ecx, 2
test edi, edi
jne 0x438258
jmp 0x437440
mov ecx, 4
sub edx, 1
cmp edx, esi
je 0x437440
movzx eax, byte [ebx]
sar eax, cl
and eax, 0xf
mov byte [edx], al
cmp ecx, 4
jne 0x438248
sub ebx, 1
xor ecx, ecx
jmp 0x43824d
movzx ecx, byte [esp + 0x34]
movzx ebx, byte [esi + 1]
rol ax, 8
mov edi, dword [esp + 0x3c]
movzx eax, ax
sar ebx, cl
movzx ecx, byte [esi]
mov ebx, dword [edi + ebx*4]
mov edi, ebp
sub edi, eax
movzx ebx, word [ebx + ecx*2]
mov ecx, dword [esp + 0x30]
movzx ecx, word [ecx + 0x176]
imul ebx, eax
imul ecx, edi
lea ecx, [ebx + ecx + 0x8000]
mov ebx, dword [esp + 0x2c]
mov eax, ecx
shr eax, 0x10
add eax, ecx
shr eax, 0x10
mov ecx, eax
test ebx, ebx
jne 0x4382d8
movzx ecx, byte [esp + 0x34]
movzx ebx, al
shr eax, 8
sar ebx, cl
mov ecx, dword [esp + 0x38]
mov ecx, dword [ecx + ebx*4]
movzx ecx, word [ecx + eax*2]
movzx eax, ch
jmp 0x43768f
rol ax, 8
mov ebx, 0xffff
movzx ebp, byte [esi]
movzx eax, ax
sub ebx, eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x34], ebx
movzx ebx, byte [esi + 1]
sar ebx, cl
mov ebx, dword [eax + ebx*4]
mov eax, dword [esp + 0x30]
movzx ebp, word [ebx + ebp*2]
movzx ebx, word [edi + 0x170]
imul ebp, eax
mov eax, dword [esp + 0x34]
imul ebx, eax
mov eax, dword [esp + 0x2c]
lea ebp, [ebp + ebx + 0x8000]
mov ebx, ebp
shr ebx, 0x10
add ebx, ebp
shr ebx, 0x10
mov ebp, ebx
test eax, eax
jne 0x43834e
movzx ebp, bl
mov eax, dword [esp + 0x38]
shr ebx, 8
sar ebp, cl
mov ebp, dword [eax + ebp*4]
movzx ebp, word [ebp + ebx*2]
mov ebx, ebp
mov eax, dword [esp + 0x3c]
movzx ebp, byte [esi + 2]
mov byte [esi], bh
mov byte [esi + 1], bl
movzx ebx, byte [esi + 3]
sar ebx, cl
mov ebx, dword [eax + ebx*4]
mov eax, dword [esp + 0x30]
movzx ebp, word [ebx + ebp*2]
movzx ebx, word [edi + 0x172]
imul ebp, eax
mov eax, dword [esp + 0x34]
imul ebx, eax
mov eax, dword [esp + 0x2c]
lea ebp, [ebp + ebx + 0x8000]
mov ebx, ebp
shr ebx, 0x10
add ebx, ebp
shr ebx, 0x10
mov ebp, ebx
test eax, eax
jne 0x4383ae
movzx ebp, bl
mov eax, dword [esp + 0x38]
shr ebx, 8
sar ebp, cl
mov ebp, dword [eax + ebp*4]
movzx ebp, word [ebp + ebx*2]
mov ebx, ebp
mov eax, dword [esp + 0x3c]
movzx ebp, byte [esi + 4]
mov byte [esi + 2], bh
mov byte [esi + 3], bl
movzx ebx, byte [esi + 5]
sar ebx, cl
mov ebx, dword [eax + ebx*4]
mov eax, dword [esp + 0x30]
movzx ebx, word [ebx + ebp*2]
mov ebp, dword [esp + 0x34]
imul ebx, eax
movzx eax, word [edi + 0x174]
imul eax, ebp
mov ebp, dword [esp + 0x2c]
lea ebx, [ebx + eax + 0x8000]
mov eax, ebx
shr eax, 0x10
add eax, ebx
shr eax, 0x10
mov ebx, eax
test ebp, ebp
jne 0x43840f
movzx ebx, al
mov ebp, dword [esp + 0x38]
shr eax, 8
sar ebx, cl
mov ebx, dword [ebp + ebx*4]
movzx ebx, word [ebx + eax*2]
movzx eax, bh
jmp 0x4373b4
mov eax, dword [ebx + 0x194]
mov dword [esp + 0x40], eax
test eax, eax
je 0x438ac0
mov edi, dword [ebx + 0x198]
test edi, edi
je 0x438ac0
mov ebx, dword [esp + 0x24]
test ebx, ebx
je 0x43918c
mov dword [esp + 0x3c], 0
mov edx, esi
xor ebp, ebp
jmp 0x438473
add esi, 1
add edx, 3
add ebp, 1
cmp dword [esp + 0x24], ebp
je 0x4380d0
movzx eax, byte [edx]
movzx ecx, byte [edx + 1]
movzx ebx, byte [edx + 2]
cmp al, cl
jne 0x4384b0
cmp al, bl
jne 0x4384b0
mov ecx, dword [esp + 0x1c]
mov ecx, dword [ecx + 0x18c]
test ecx, ecx
je 0x438498
movzx eax, byte [ecx + eax]
cmp byte [esp + 0x28], 0
mov byte [esi], al
je 0x438460
movzx eax, byte [edx + 3]
add esi, 2
add edx, 4
mov byte [esi - 1], al
jmp 0x438466
movzx eax, byte [edi + eax]
movzx ecx, byte [edi + ecx]
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x3c], 1
imul eax, ebx
mov ebx, dword [esp + 0x34]
imul ecx, ebx
mov ebx, dword [esp + 0x2c]
lea eax, [eax + ecx + 0x4000]
movzx ecx, byte [edi + ebx]
mov ebx, dword [esp + 0x38]
imul ecx, ebx
add eax, ecx
mov ecx, dword [esp + 0x40]
shr eax, 0xf
movzx eax, byte [ecx + eax]
jmp 0x438498
test esi, esi
je 0x4365a6
test ecx, ecx
je 0x43792f
lea edx, [ecx + ecx*2]
mov ebx, eax
lea ebp, [eax + edx]
lea esi, cs:[esi]
movzx edi, byte [eax]
movzx edx, byte [eax + 1]
add eax, 3
add ebx, 1
sar edi, 3
sar edx, 3
shl edi, 0xa
shl edx, 5
or edx, edi
movzx edi, byte [eax - 1]
sar edi, 3
or edx, edi
movzx edx, byte [esi + edx]
mov byte [ebx - 1], dl
cmp eax, ebp
jne 0x438520
jmp 0x43792f
test edi, edi
je 0x436404
xor ecx, ecx
mov ebp, edi
lea esi, [esi]
movzx eax, byte [esi - 2]
movzx edi, byte [esi - 3]
sub esi, 4
add ecx, 1
movzx ebx, byte [esi + 3]
shl eax, 8
or eax, edi
movzx edi, byte [esi]
shl eax, 8
or eax, edi
shl eax, 8
or eax, ebx
mov dword [esi], eax
cmp ebp, ecx
jne 0x438568
jmp 0x436f4c
test esi, esi
je 0x4372d0
xor eax, eax
lea esi, [esi]
add eax, 1
not byte [ebx - 1]
sub ebx, 4
cmp esi, eax
jne 0x4385b0
jmp 0x436928
mov ebx, dword [esp + 0x1c]
mov ebp, dword [ebx + 0x194]
test ebp, ebp
je 0x4364ea
and esi, 2
mov ebx, esi
cmp bl, 1
sbb edi, edi
and edi, 0xfffffffe
add edi, 4
lea esi, [ecx + edi]
test eax, eax
je 0x43636e
mov ebx, ebp
lea esi, cs:[esi]
nop
movzx edx, byte [esi]
movzx edx, byte [ebx + edx]
mov byte [esi], dl
add esi, edi
sub eax, 1
jne 0x438600
jmp 0x4379cd
mov eax, dword [esp + 0x1c]
mov ebx, dword [eax + 0x208]
mov esi, dword [eax + 0x204]
mov eax, dword [eax + 0x124]
mov dword [esp + 0x24], eax
add eax, 1
jmp 0x43758b
mov esi, dword [esp + 0x1c]
mov dword [esp + 4], str.png_do_rgb_to_gray_found_nongray_pixel
mov dword [esp], esi
call fcn.0042b170
mov edx, dword [esi + 0x7c]
mov eax, edx
and eax, 0x600000
jmp 0x438144
mov ecx, dword [esp + 0x20]
mov esi, dword [ecx + 4]
add esi, eax
cmp eax, esi
jae 0x436a48
mov ebp, dword [esp + 0x28]
xor edx, edx
xor edi, edi
lea esi, [esi]
movzx ebx, byte [eax]
mov ecx, dword [esp + edx*4 + 0x5c]
add edx, 1
sar ebx, cl
cmp ebp, edx
cmovle edx, edi
add eax, 1
mov byte [eax - 1], bl
cmp esi, eax
jne 0x438688
jmp 0x436a48
mov eax, dword [esp + 0x24]
xor ebx, ebx
test eax, eax
je case.0x437612.0
mov edi, dword [esp + 0x1c]
mov edx, ebx
jmp 0x438706
movzx eax, word [edi + 0x166]
mov byte [esi], ah
mov byte [esi + 1], al
movzx eax, word [edi + 0x168]
mov byte [esi + 2], ah
mov byte [esi + 3], al
movzx eax, word [edi + 0x16a]
mov byte [esi + 4], ah
mov byte [esi + 5], al
add edx, 1
add esi, 8
cmp dword [esp + 0x24], edx
je 0x436fd0
movzx eax, word [esi + 6]
test ax, ax
je 0x4386d0
cmp ax, 0xffff
je 0x4386f6
movzx ecx, word [esi + 2]
rol ax, 8
movzx ebx, word [esi]
mov ebp, 0xffff
movzx eax, ax
rol cx, 8
sub ebp, eax
rol bx, 8
mov word [esp + 0x28], cx
movzx ecx, word [esi + 4]
movzx ebx, bx
imul ebx, eax
rol cx, 8
mov word [esp + 0x2c], cx
mov ecx, ebp
movzx ebp, word [edi + 0x166]
imul ebp, ecx
lea ebx, [ebx + ebp + 0x8000]
mov ebp, ebx
shr ebp, 0x10
add ebx, ebp
mov ebp, ebx
shr ebx, 0x18
shr ebp, 0x10
mov byte [esi], bl
mov ebx, ebp
mov ebp, ecx
mov byte [esi + 1], bl
movzx ebx, word [edi + 0x168]
imul ebx, ecx
movzx ecx, word [esp + 0x28]
imul ecx, eax
lea ecx, [ebx + ecx + 0x8000]
mov ebx, ecx
shr ebx, 0x10
add ecx, ebx
mov ebx, ecx
shr ecx, 0x18
shr ebx, 0x10
mov byte [esi + 2], cl
movzx ecx, word [edi + 0x16a]
mov byte [esi + 3], bl
movzx ebx, word [esp + 0x2c]
imul ecx, ebp
imul eax, ebx
lea ecx, [ecx + eax + 0x8000]
mov eax, ecx
shr eax, 0x10
add eax, ecx
mov ecx, eax
shr eax, 0x18
shr ecx, 0x10
mov byte [esi + 4], al
mov byte [esi + 5], cl
jmp 0x4386f6
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x1c]
xor ecx, ecx
mov ebp, 0xffff
test eax, eax
jne 0x43881c
jmp case.0x437612.0
movzx eax, word [edi + 0x16c]
mov byte [esi], ah
mov byte [esi + 1], al
add ecx, 1
add esi, 4
cmp dword [esp + 0x24], ecx
je 0x436fd0
movzx eax, word [esi + 2]
test ax, ax
je 0x438800
cmp ax, 0xffff
je 0x43880c
movzx edx, word [esi]
rol ax, 8
movzx ebx, word [edi + 0x16c]
movzx eax, ax
rol dx, 8
movzx edx, dx
imul edx, eax
mov dword [esp + 0x28], edx
mov edx, ebp
sub edx, eax
mov eax, dword [esp + 0x28]
imul ebx, edx
lea edx, [eax + ebx + 0x8000]
mov eax, edx
shr eax, 0x10
add eax, edx
mov edx, eax
shr eax, 0x18
shr edx, 0x10
mov byte [esi], al
mov byte [esi + 1], dl
jmp 0x43880c
imul eax, ecx
add eax, 7
shr eax, 3
jmp 0x437953
cmp al, 8
jne 0x436320
mov eax, dword [esp + 0x28]
add eax, ecx
mov dword [esp + 0x30], eax
lea esi, [esi]
mov edi, dword [esp + 0x28]
test ebx, ebx
je 0x439199
mov edx, dword [esp + 0x30]
lea ebp, [edi*4]
lea eax, [ecx + ebp]
sub edx, edi
test edi, edi
je 0x438927
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x24], ebp
mov ebp, edx
lea esi, [esi]
movzx edi, byte [ecx]
mov edx, 0xffffffff
cmp ebx, edi
jle 0x4388ec
mov edx, dword [esp + 0x2c]
movzx edx, byte [edx + edi]
mov byte [eax], dl
movzx edx, byte [ecx]
sub eax, 4
sub ecx, 1
lea edx, [edx + edx*2]
movzx edx, byte [esi + edx + 2]
mov byte [eax + 3], dl
movzx edx, byte [ecx + 1]
lea edx, [edx + edx*2]
movzx edx, byte [esi + edx + 1]
mov byte [eax + 2], dl
movzx edx, byte [ecx + 1]
lea edx, [edx + edx*2]
movzx edx, byte [esi + edx]
mov byte [eax + 1], dl
cmp ecx, ebp
jne 0x4388d8
mov ebp, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov dword [eax + 4], ebp
mov dword [eax + 8], 0x20040806
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
mov eax, edx
and eax, 0x40080
cmp eax, 0x40000
jne 0x436332
jmp 0x436d0f
mov ecx, dword [esp + 0x1c]
movzx ebx, word [ecx + 0x16c]
mov ecx, edx
shl ebx, cl
or eax, ebx
jmp 0x437e80
mov ecx, dword [esp + 0x1c]
movzx edx, word [ecx + 0x16c]
mov ecx, ebx
shl edx, cl
or eax, edx
jmp 0x437f14
movzx ebp, byte [ecx + edx*2 + 1]
mov esi, dword [esp + 0x24]
mul byte [esi + ebp]
mov esi, dword [esp + 0x1c]
mov ebp, 0xff
sub ebp, ebx
imul bp, word [esi + 0x176]
lea ebx, [eax + ebp + 0x80]
movzx eax, bh
movzx ebx, bx
add eax, ebx
mov ebx, dword [esp + 0x2c]
sar eax, 8
test ebx, ebx
jne 0x437bc4
mov esi, dword [esp + 0x3c]
movzx eax, al
movzx eax, byte [esi + eax]
jmp 0x437bc4
movzx eax, dl
mov ebx, 0xff
movzx edi, byte [esi]
sub ebx, eax
mov eax, edx
mov word [esp + 0x28], bx
mov ebx, dword [esp + 0x34]
mul byte [ebx + edi]
movzx edi, word [esp + 0x28]
imul di, word [ebp + 0x170]
lea eax, [eax + edi + 0x80]
movzx edi, ah
movzx eax, ax
add edi, eax
sar edi, 8
mov eax, edi
mov edi, dword [esp + 0x2c]
test edi, edi
jne 0x438a2f
movzx edi, al
mov eax, dword [esp + 0x3c]
movzx eax, byte [eax + edi]
movzx edi, byte [esi + 1]
mov ebx, dword [esp + 0x34]
mov byte [esi], al
mov eax, edx
mul byte [ebx + edi]
movzx edi, word [esp + 0x28]
imul di, word [ebp + 0x172]
mov ebx, dword [esp + 0x2c]
lea eax, [eax + edi + 0x80]
movzx edi, ah
movzx eax, ax
add edi, eax
sar edi, 8
mov eax, edi
test ebx, ebx
jne 0x438a72
movzx edi, al
mov eax, dword [esp + 0x3c]
movzx eax, byte [eax + edi]
mov ebx, dword [esp + 0x34]
movzx edi, byte [esi + 2]
mov byte [esi + 1], al
mov eax, edx
mul byte [ebx + edi]
movzx ebx, word [esp + 0x28]
imul bx, word [ebp + 0x174]
lea eax, [eax + ebx + 0x80]
movzx edx, ah
movzx eax, ax
add edx, eax
mov eax, dword [esp + 0x2c]
sar edx, 8
test eax, eax
jne 0x437a82
mov eax, dword [esp + 0x3c]
movzx edx, dl
movzx edx, byte [eax + edx]
jmp 0x437a82
mov eax, dword [esp + 0x24]
mov dword [esp + 0x3c], 0
mov ebx, esi
xor edi, edi
test eax, eax
je 0x4380e3
mov eax, dword [esp + 0x24]
mov dword [esp + 0x2c], eax
jmp 0x438afb
add esi, 1
add ebx, 3
add edi, 1
cmp dword [esp + 0x2c], edi
je 0x4380d0
movzx eax, byte [ebx]
movzx ecx, byte [ebx + 1]
movzx edx, byte [ebx + 2]
cmp al, cl
jne 0x438b30
cmp al, dl
jne 0x438b30
cmp byte [esp + 0x28], 0
mov byte [esi], al
je 0x438ae8
movzx eax, byte [ebx + 3]
add esi, 2
add ebx, 4
mov byte [esi - 1], al
jmp 0x438aee
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x3c], 1
imul eax, ebp
mov ebp, dword [esp + 0x34]
imul ecx, ebp
add ecx, eax
mov eax, dword [esp + 0x38]
imul edx, eax
lea eax, [ecx + edx]
shr eax, 0xf
jmp 0x438b0e
mov esi, dword [esp + 0x24]
test esi, esi
je 0x438ba2
movzx edi, byte [esp + 0x28]
movzx ebp, byte [esp + 0x30]
lea esi, [esi]
movzx edx, byte [ecx - 1]
sub ecx, 2
sub eax, 4
add ebx, 1
mov byte [eax + 3], dl
movzx edx, byte [ecx]
mov byte [eax + 2], dl
mov edx, ebp
mov byte [eax + 1], dl
mov edx, edi
mov byte [eax], dl
cmp esi, ebx
jne 0x438b78
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
mov edi, 0x2002
shl eax, 2
mov word [esi + 0xa], di
mov dword [esi + 4], eax
jmp 0x4363f8
mov ecx, ebp
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x28]
mov byte [eax + 9], 8
mov byte [eax + 0xb], 8
mov dword [eax + 4], edi
jmp 0x4388a8
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x1c]
xor ecx, ecx
mov ebp, 0xff
test eax, eax
jne 0x438c2d
jmp case.0x437612.0
movzx eax, word [ebx + 0x166]
mov byte [esi], al
movzx eax, word [ebx + 0x168]
mov byte [esi + 1], al
movzx eax, word [ebx + 0x16a]
mov byte [esi + 2], al
add ecx, 1
add esi, 4
cmp dword [esp + 0x24], ecx
je 0x436fd0
movzx edx, byte [esi + 3]
test dl, dl
je 0x438c00
cmp dl, 0xff
je 0x438c1d
movzx eax, dl
mov edi, ebp
sub edi, eax
mov eax, edx
mov word [esp + 0x28], di
mul byte [esi]
imul di, word [ebx + 0x166]
lea eax, [eax + edi + 0x80]
movzx edi, ah
add eax, edi
movzx edi, word [esp + 0x28]
imul di, word [ebx + 0x168]
mov byte [esi], ah
mov eax, edx
mul byte [esi + 1]
lea eax, [eax + edi + 0x80]
movzx edi, ah
add eax, edi
mov byte [esi + 1], ah
mov eax, edx
movzx edx, word [esp + 0x28]
mul byte [esi + 2]
imul dx, word [ebx + 0x16a]
lea edx, [eax + edx + 0x80]
movzx eax, dh
add eax, edx
mov byte [esi + 2], ah
jmp 0x438c1d
mov ebp, dword [esp + 0x24]
xor esi, esi
mov edi, 0xff
test ebp, ebp
je case.0x437612.0
mov ebp, dword [esp + 0x24]
mov ebx, dword [esp + 0x1c]
jmp 0x438ce6
movzx eax, word [ebx + 0x16c]
mov byte [ecx + esi*2 + 1], al
add esi, 1
cmp ebp, esi
je 0x436fd0
movzx eax, byte [ecx + esi*2 + 2]
test al, al
je 0x438cd0
cmp al, 0xff
je 0x438cdb
movzx edx, al
mul byte [ecx + esi*2 + 1]
mov word [esp + 0x24], dx
mov edx, edi
sub dx, word [esp + 0x24]
imul dx, word [ebx + 0x16c]
lea edx, [edx + eax + 0x80]
movzx eax, dh
add eax, edx
mov byte [ecx + esi*2 + 1], ah
jmp 0x438cdb
mov eax, dword [esp + 0x24]
test eax, eax
je case.0x437612.0
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x24]
xor edx, edx
movzx ecx, word [edi + 0x1b6]
jmp 0x438d4e
add edx, 1
add esi, 6
cmp ebx, edx
je 0x436fd0
movzx eax, word [esi]
rol ax, 8
cmp ax, cx
jne 0x438d40
movzx eax, word [esi + 2]
rol ax, 8
cmp ax, word [edi + 0x1b8]
jne 0x438d40
movzx eax, word [esi + 4]
rol ax, 8
cmp ax, word [edi + 0x1ba]
jne 0x438d40
movzx eax, word [edi + 0x166]
mov byte [esi], ah
mov byte [esi + 1], al
movzx eax, word [edi + 0x168]
mov byte [esi + 2], ah
mov byte [esi + 3], al
movzx eax, word [edi + 0x16a]
mov byte [esi + 4], ah
mov byte [esi + 5], al
jmp 0x438d40
test dl, dl
jne 0x4370c0
cmp al, 2
jne 0x43925c
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4370c0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x34], ebx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x40], ecx
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x30]
add dword [esp + 0x2c], 4
movzx eax, byte [eax]
mov ecx, eax
mov esi, eax
mov ebx, eax
and eax, 3
and ecx, 0xc0
imul eax, eax, 0x55
and esi, 0x30
and ebx, 0xc
mov edx, ecx
mov ebp, ecx
sar ebp, 4
sar edx, 2
or edx, ebp
mov ebp, esi
movzx eax, byte [edi + eax]
or edx, ecx
sar ecx, 6
sar ebp, 2
or edx, ecx
shr al, 6
movzx ecx, byte [edi + edx]
mov edx, esi
lea esi, [esi + esi*4]
sar edx, 4
or edx, ebp
and ecx, 0xffffffc0
or edx, esi
mov esi, dword [esp + 0x30]
movzx edx, byte [edi + edx]
shr dl, 2
and edx, 0x30
or edx, ecx
lea ecx, [ebx + ebx*4]
or eax, edx
mov edx, ebx
shl ecx, 2
sar edx, 2
or edx, ebx
or edx, ecx
movzx edx, byte [edi + edx]
shr dl, 4
and edx, 0xc
or eax, edx
mov byte [esi], al
mov eax, esi
mov esi, dword [esp + 0x24]
add eax, 1
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x2c]
cmp eax, esi
jb 0x438de0
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x34]
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0x3c]
movzx eax, byte [eax + 9]
mov ecx, dword [esp + 0x40]
cmp al, 4
jne 0x43949e
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
xor ebx, ebx
lea esi, cs:[esi]
movzx eax, byte [esi]
add ebx, 2
add esi, 1
mov ebp, eax
and eax, 0xf
and ebp, 0xf0
mov edi, ebp
sar edi, 4
or edi, ebp
mov ebp, eax
shl ebp, 4
movzx edi, byte [edx + edi]
add eax, ebp
movzx eax, byte [edx + eax]
and edi, 0xfffffff0
shr al, 4
or eax, edi
mov byte [esi - 1], al
cmp ebx, ecx
jb 0x438eb0
jmp 0x4370c0
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x438f27
mov ecx, dword [esp + 0x2c]
movzx ebx, byte [esp + 0x30]
nop
movzx edx, byte [eax - 1]
sub eax, 3
sub esi, 4
mov byte [esi + 3], dl
movzx edx, byte [eax + 1]
mov byte [esi + 2], dl
movzx edx, byte [eax]
mov byte [esi + 1], dl
mov byte [esi], bl
cmp ecx, eax
jne 0x438f00
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
mov ebp, 0x2004
shl eax, 2
mov word [esi + 0xa], bp
mov dword [esi + 4], eax
jmp 0x4363f8
test dl, 8
je 0x4363bc
mov esi, dword [esp + 0x20]
movzx esi, byte [esi + 9]
mov ebx, esi
jmp 0x436975
mov edx, dword [esp + 0x24]
xor eax, eax
test edx, edx
je 0x4393c9
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x24], edi
mov edx, ecx
lea esi, cs:[esi]
movzx esi, byte [edx + eax*4 + 2]
movzx ecx, byte [esp + 0x24]
movzx edi, byte [edx + eax*4 + 1]
sar esi, cl
mov esi, dword [ebx + esi*4]
movzx esi, word [esi + edi*2]
mov ecx, esi
mov byte [edx + eax*4 + 1], ch
mov byte [edx + eax*4 + 2], cl
add eax, 1
cmp ebp, eax
jne 0x438f78
jmp 0x4370c0
cmp al, 8
jne 0x437786
mov eax, dword [esp + 0x24]
test eax, eax
je 0x437112
lea edx, [eax + eax*2 + 1]
mov eax, dword [esp + 0x28]
add edx, ecx
lea esi, [esi]
movzx ecx, byte [esi]
add esi, 3
movzx ecx, byte [eax + ecx]
mov byte [esi - 3], cl
movzx ecx, byte [esi - 2]
movzx ecx, byte [eax + ecx]
mov byte [esi - 2], cl
movzx ecx, byte [esi - 1]
movzx ecx, byte [eax + ecx]
mov byte [esi - 1], cl
cmp esi, edx
jne 0x438fc8
jmp 0x4370c0
cmp al, 6
jne 0x4370c0
mov ebp, dword [esp + 0x24]
xor edx, edx
test ebp, ebp
je 0x4393c9
mov ebp, dword [esp + 0x24]
mov ecx, edi
movzx eax, byte [esi + 1]
movzx edi, byte [esi]
add edx, 1
add esi, 8
sar eax, cl
mov eax, dword [ebx + eax*4]
movzx eax, word [eax + edi*2]
movzx edi, byte [esi - 6]
mov byte [esi - 8], ah
mov byte [esi - 7], al
movzx eax, byte [esi - 5]
sar eax, cl
mov eax, dword [ebx + eax*4]
movzx eax, word [eax + edi*2]
movzx edi, byte [esi - 4]
mov byte [esi - 6], ah
mov byte [esi - 5], al
movzx eax, byte [esi - 3]
sar eax, cl
mov eax, dword [ebx + eax*4]
movzx eax, word [eax + edi*2]
mov byte [esi - 4], ah
mov byte [esi - 3], al
cmp ebp, edx
jne 0x439010
jmp 0x4370c0
cmp al, 8
jne 0x438f5b
mov esi, dword [esp + 0x24]
test esi, esi
je 0x4393c9
mov ebx, dword [esp + 0x28]
xor edx, edx
lea esi, [esi]
movzx eax, byte [ecx + edx*2 + 1]
movzx eax, byte [ebx + eax]
mov byte [ecx + edx*2 + 1], al
add edx, 1
cmp esi, edx
jne 0x439080
jmp 0x4370c0
mov ebx, dword [esp + 0x24]
test ebx, ebx
je case.0x437612.0
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x1c]
lea edx, [edi + edi*2 + 1]
movzx eax, word [ebx + 0x1b6]
add ecx, edx
jmp 0x4390cb
add esi, 3
cmp esi, ecx
je 0x436fd0
movzx edx, byte [esi]
cmp dx, ax
jne 0x4390c0
movzx edx, byte [esi + 1]
cmp dx, word [ebx + 0x1b8]
jne 0x4390c0
movzx edx, byte [esi + 2]
cmp dx, word [ebx + 0x1ba]
jne 0x4390c0
movzx edx, word [ebx + 0x166]
mov byte [esi], dl
movzx edx, word [ebx + 0x168]
mov byte [esi + 1], dl
movzx edx, word [ebx + 0x16a]
mov byte [esi + 2], dl
jmp 0x4390c0
mov esi, dword [esp + 0x24]
test esi, esi
je 0x43916e
mov esi, dword [esp + 0x24]
movzx edi, byte [esp + 0x28]
movzx ebp, byte [esp + 0x30]
lea esi, [esi]
movzx eax, byte [ecx - 1]
sub ecx, 6
sub edx, 8
add ebx, 1
mov byte [edx + 7], al
movzx eax, byte [ecx + 4]
mov byte [edx + 6], al
movzx eax, byte [ecx + 3]
mov byte [edx + 5], al
movzx eax, byte [ecx + 2]
mov byte [edx + 4], al
movzx eax, byte [ecx + 1]
mov byte [edx + 3], al
movzx eax, byte [ecx]
mov byte [edx + 2], al
mov eax, ebp
mov byte [edx + 1], al
mov eax, edi
mov byte [edx], al
cmp esi, ebx
jne 0x439128
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x7c]
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
mov ebx, 0x4004
shl edx, 3
mov word [esi + 0xa], bx
mov dword [esi + 4], edx
mov edx, eax
jmp 0x4363f8
mov dword [esp + 0x3c], 0
jmp 0x4380e3
mov edx, dword [esp + 0x30]
lea ebx, [edi + edi*2]
lea eax, [ecx + ebx]
sub edx, edi
test edi, edi
je 0x4391e7
mov ecx, dword [esp + 0x30]
mov ebp, ebx
nop
movzx edi, byte [ecx]
sub eax, 3
sub ecx, 1
lea edi, [edi + edi*2]
movzx ebx, byte [esi + edi + 2]
mov byte [eax + 3], bl
movzx edi, byte [ecx + 1]
lea edi, [edi + edi*2]
movzx ebx, byte [esi + edi + 1]
mov byte [eax + 2], bl
movzx edi, byte [ecx + 1]
lea edi, [edi + edi*2]
movzx ebx, byte [esi + edi]
mov byte [eax + 1], bl
cmp ecx, edx
jne 0x4391b0
mov ebx, ebp
mov eax, dword [esp + 0x20]
mov dword [eax + 4], ebx
mov dword [eax + 8], 0x18030802
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
jmp 0x436332
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
lea edx, [eax - 1]
shr edx, 1
add edi, edx
mov edx, eax
lea eax, [eax*4]
and eax, 4
mov ebp, eax
test edx, edx
je 0x438bc2
mov eax, ecx
mov edx, dword [esp + 0x30]
mov ecx, ebp
mov ebp, eax
jmp 0x439246
add ecx, 4
sub edx, 1
cmp ebp, edx
je 0x438bc0
movzx eax, byte [edi]
sar eax, cl
and eax, 0xf
mov byte [edx], al
cmp ecx, 4
jne 0x439238
sub edi, 1
xor ecx, ecx
jmp 0x43923b
cmp al, 4
jne 0x439462
mov ebp, dword [esp + 0x24]
test ebp, ebp
jne 0x438e9e
jmp 0x4370c0
mov edi, dword [esp + 0x24]
test edi, edi
je case.0x437612.0
mov eax, dword [esp + 0x1c]
xor ebx, ebx
mov ebp, 0x3f3f
movzx eax, word [eax + 0x1bc]
mov dword [esp + 0x28], eax
mov eax, 6
jmp 0x4392bd
add esi, 1
mov eax, 6
add ebx, 1
cmp dword [esp + 0x24], ebx
je 0x436fd0
movzx edx, byte [esi]
mov ecx, eax
mov edi, edx
sar edi, cl
mov ecx, edi
mov edi, dword [esp + 0x28]
and ecx, 3
cmp ecx, edi
jne 0x4392f3
mov ecx, 6
mov edi, ebp
sub ecx, eax
sar edi, cl
mov ecx, dword [esp + 0x1c]
and edi, edx
movzx edx, word [ecx + 0x16c]
mov ecx, eax
shl edx, cl
or edx, edi
mov byte [esi], dl
test eax, eax
je 0x4392a8
sub eax, 2
jmp 0x4392b0
mov eax, dword [esp + 0x24]
test eax, eax
je case.0x437612.0
mov eax, dword [esp + 0x1c]
xor edx, edx
mov edi, 0xf0f
movzx ebp, word [eax + 0x1bc]
mov eax, 4
mov dword [esp + 0x28], ebp
jmp 0x43933d
add esi, 1
mov eax, 4
add edx, 1
cmp dword [esp + 0x24], edx
je 0x436fd0
movzx ebp, byte [esi]
mov ecx, eax
mov ebx, ebp
sar ebx, cl
mov ecx, ebx
mov ebx, dword [esp + 0x28]
and ecx, 0xf
cmp ecx, ebx
jne 0x439373
mov ecx, 4
mov ebx, edi
sub ecx, eax
sar ebx, cl
mov ecx, dword [esp + 0x1c]
and ebx, ebp
movzx ebp, word [ecx + 0x16c]
mov ecx, eax
shl ebp, cl
or ebx, ebp
mov byte [esi], bl
test eax, eax
je 0x439328
sub eax, 4
jmp 0x439330
mov ebp, dword [esp + 0x24]
test ebp, ebp
je case.0x437612.0
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x24]
xor eax, eax
movzx ebx, word [edi + 0x1bc]
lea esi, [esi]
movzx edx, word [ecx + eax*2 + 1]
rol dx, 8
cmp dx, bx
jne 0x4393bd
movzx edx, word [edi + 0x16c]
mov byte [ecx + eax*2 + 1], dh
mov byte [ecx + eax*2 + 2], dl
add eax, 1
cmp esi, eax
jne 0x4393a0
jmp 0x436fd0
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x7c]
mov eax, edx
not eax
test eax, 0x40080
jne 0x436362
jmp 0x4370f7
lea edx, [ebp*4]
jmp 0x436cc9
test edx, 0x4000000
jne 0x4394af
test dh, 4
je 0x436383
jmp 0x436b00
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4370c0
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x24], edi
xor eax, eax
mov edx, ecx
lea esi, [esi]
movzx esi, byte [edx + eax*2 + 2]
movzx ecx, byte [esp + 0x24]
movzx edi, byte [edx + eax*2 + 1]
sar esi, cl
mov esi, dword [ebx + esi*4]
movzx esi, word [esi + edi*2]
mov ecx, esi
mov byte [edx + eax*2 + 1], ch
mov byte [edx + eax*2 + 2], cl
add eax, 1
cmp ebp, eax
jne 0x439428
jmp 0x4370c0
lea edx, [ecx*4]
jmp 0x437c57
cmp al, 8
jne 0x4370c0
mov edi, dword [esp + 0x24]
test edi, edi
je 0x4370c0
mov eax, dword [esp + 0x24]
lea edx, [ecx + eax + 1]
mov ecx, dword [esp + 0x28]
lea esi, [esi]
movzx eax, byte [esi]
add esi, 1
movzx eax, byte [ecx + eax]
mov byte [esi - 1], al
cmp esi, edx
jne 0x439488
jmp 0x4370c0
cmp al, 8
je 0x439476
cmp al, 0x10
jne 0x4370c0
jmp 0x439416
add ecx, 1
jmp 0x43652f
mov dword [esp + 4], str.NULL_row_buffer
mov dword [esp], edi
call fcn.0042b7c0
call fcn.00464ba0
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], str.Uninitialized_row
mov dword [esp], eax
call fcn.0042b7c0
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], str.png_do_quantize_returned_rowbytes0
mov dword [esp], eax
call fcn.0042b7c0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push esi
push ebx
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
movzx edx, byte [eax + 0xb]
mov esi, dword [eax + 4]
add edx, 7
sar edx, 3
mov ebx, edx
lea eax, [ecx + edx]
add ecx, esi
neg ebx
cmp edx, esi
jae 0x439535
lea esi, [esi]
movzx edx, byte [eax + ebx]
add byte [eax], dl
add eax, 1
cmp eax, ecx
jne 0x439528
pop ebx
pop esi
ret