Function at 0x4119f0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x8c
mov dword [esp + 0x48], eax
mov dword [esp + 0x2c], edx
mov ebp, ecx
mov eax, dword [esp + 0xa0]
cmp dword [esp + 0xac], 0x10
je 0x412010
mov dword [esp + 0x20], eax
mov ebx, 1
mov esi, 1
mov eax, dword [esp + 0x48]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov dword [esp + 0x40], ecx
mov edi, dword [esp + 0xa4]
mov dword [esp + 0x4c], edi
mov dword [esp], 0
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0xa8]
mov eax, edi
call fcn.00411940
mov edi, eax
mov eax, dword [esp + 0x48]
mov dword [eax + 0xc], edi
test edi, edi
je 0x412444
mov dword [esp], 7
mov ecx, dword [esp + 0xac]
mov edx, dword [esp + 0xa4]
mov eax, dword [esp + 0x40]
call fcn.0040fb40
test eax, eax
je 0x412030
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0xa4]
imul eax, ecx
mov dword [esp + 0x74], eax
imul eax, dword [esp + 0xac]
add eax, 7
shr eax, 3
mov dword [esp + 0x58], eax
inc eax
imul eax, dword [esp + 0xa8]
cmp ebp, eax
jb 0x412047
mov eax, dword [esp + 0xa8]
test eax, eax
je 0x412434
mov edx, dword [esp + 0xa0]
imul edx, dword [esp + 0xa4]
imul ebx, edx
mov dword [esp + 0x50], ebx
imul esi, ecx
mov dword [esp + 0x18], esi
mov dword [esp + 0x44], 0
mov dword [esp + 0x34], 0
neg ebx
mov dword [esp + 0x54], ebx
mov ebx, edx
mov eax, dword [esp + 0x58]
sub ebx, eax
mov dword [esp + 0x64], ebx
mov dword [esp + 0x78], edx
mov esi, edi
lea esi, [esi]
nop
mov eax, dword [esp + 0x44]
add esi, eax
mov eax, dword [esp + 0x2c]
lea ebp, [eax + 1]
movzx edi, byte [eax]
and edi, 0xff
cmp edi, 4
jg 0x41244e
cmp dword [esp + 0xac], 7
jg 0x411ec0
mov eax, dword [esp + 0x64]
add esi, eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x54]
lea ecx, [esi + eax]
mov eax, dword [esp + 0x34]
test eax, eax
je 0x411ff0
mov dword [esp + 0x18], 1
mov edx, ebp
xor eax, eax
lea esi, [esi]
cmp edi, 6
ja case.default.0x411b85
jmp dword [edi*4 + 0x4680f0]
mov bl, byte [edx]
mov byte [esi + eax], bl
inc eax
inc edx
cmp dword [esp + 0x18], eax
jg 0x411b80
cmp dword [esp + 0xac], 8
je 0x411e70
cmp dword [esp + 0xac], 0x10
je 0x411fb0
add dword [esp + 0x2c], 2
inc esi
inc ecx
cmp dword [esp + 0xac], 7
jg 0x411e99
mov eax, dword [esp + 0x4c]
dec eax
mov ebx, dword [esp + 0x18]
imul ebx, eax
cmp edi, 6
ja case.default.0x411be3
jmp dword [edi*4 + 0x46810c]
mov bl, byte [edx]
add bl, byte [ecx + eax]
mov byte [esi + eax], bl
jmp case.default.0x411b85
mov bl, byte [ecx + eax]
shr bl, 1
add bl, byte [edx]
mov byte [esi + eax], bl
jmp case.default.0x411b85
test ebx, ebx
jle case.default.0x411be3
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x18]
sub esi, eax
mov ecx, esi
lea edi, [edx + ebx]
mov ebx, eax
lea esi, [esi]
mov al, byte [ecx]
shr al, 1
add al, byte [edx]
mov byte [ecx + ebx], al
inc edx
inc ecx
cmp edi, edx
jne 0x411c30
nop
mov dword [esp + 0x2c], edi
mov eax, dword [esp + 0x34]
inc eax
mov ebx, dword [esp + 0x50]
add dword [esp + 0x44], ebx
cmp dword [esp + 0xa8], eax
je 0x412458
mov edi, dword [esp + 0x48]
mov esi, dword [edi + 0xc]
mov dword [esp + 0x34], eax
jmp 0x411b20
mov eax, dword [esp + 0x2c]
test ebx, ebx
jle 0x411de2
mov dword [esp + 0x1c], eax
mov edi, dword [esp + 0x18]
sub ecx, edi
sub esi, edi
mov ebp, esi
lea edi, [eax + ebx]
mov dword [esp + 0x30], edi
jmp 0x411cca
cmp eax, edi
jge 0x411ca8
mov dl, byte [esp + 0x2c]
add edx, dword [esp + 0x28]
mov eax, dword [esp + 0x18]
mov byte [ebp + eax], dl
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
inc ecx
inc ebp
mov edi, dword [esp + 0x30]
cmp eax, edi
je 0x411c40
mov eax, dword [esp + 0x1c]
mov al, byte [eax]
mov byte [esp + 0x28], al
mov al, byte [ecx]
mov byte [esp + 0x2c], al
mov bl, al
and ebx, 0xff
mov dword [esp + 0x24], ebx
mov eax, dword [esp + 0x18]
mov dl, byte [ecx + eax]
mov esi, edx
and esi, 0xff
mov al, byte [ebp]
mov byte [esp + 0x38], al
mov edi, eax
and edi, 0xff
lea eax, [edi + esi]
sub eax, ebx
mov ebx, eax
sub ebx, edi
mov edi, ebx
jns 0x411d15
neg edi
mov ebx, edi
mov edi, eax
sub edi, esi
jns 0x411d1d
neg edi
mov esi, dword [esp + 0x24]
sub eax, esi
jns 0x411d27
neg eax
cmp edi, ebx
jl 0x411ca0
cmp eax, ebx
jl 0x411ca0
mov dl, byte [esp + 0x38]
jmp 0x411ca8
cmp ebx, 4
jae 0x4123a4
mov edi, dword [esp + 0x2c]
test ebx, ebx
je 0x411c40
mov al, byte [edi]
mov byte [esp + 0x1c], al
mov byte [esi], al
add edi, ebx
test bl, 2
je 0x411c40
mov eax, dword [esp + 0x2c]
mov ax, word [eax + ebx - 2]
mov word [esi + ebx - 2], ax
jmp 0x411c40
mov eax, dword [esp + 0x2c]
test ebx, ebx
jle 0x411de2
mov ecx, dword [esp + 0x18]
sub esi, ecx
mov edx, esi
lea edi, [eax + ebx]
mov ebx, ecx
lea esi, [esi]
lea esi, [esi]
mov cl, byte [eax]
add cl, byte [edx]
mov byte [edx + ebx], cl
inc eax
inc edx
cmp eax, edi
jne 0x411da0
jmp 0x411c40
xor eax, eax
test ebx, ebx
jle case.default.0x411be3
mov edi, dword [esp + 0x2c]
lea esi, [esi]
mov dl, byte [edi + eax]
add dl, byte [ecx + eax]
mov byte [esi + eax], dl
inc eax
cmp ebx, eax
jne 0x411dd0
mov eax, dword [esp + 0x2c]
lea edi, [eax + ebx]
jmp 0x411c40
mov eax, dword [esp + 0x2c]
test ebx, ebx
jle 0x411de2
mov ecx, dword [esp + 0x18]
sub esi, ecx
mov edx, esi
lea edi, [eax + ebx]
mov ebx, ecx
lea esi, [esi]
lea esi, [esi]
mov cl, byte [eax]
add cl, byte [edx]
mov byte [edx + ebx], cl
inc eax
inc edx
cmp edi, eax
jne 0x411e10
jmp 0x411c40
xor edx, edx
mov edi, esi
mov eax, dword [esp + 0x18]
sub edi, eax
test ebx, ebx
jle case.default.0x411be3
nop
xor eax, eax
mov al, byte [edi + edx]
movzx ebp, byte [ecx + edx]
and ebp, 0xff
add eax, ebp
sar eax, 1
mov ebp, dword [esp + 0x2c]
add al, byte [ebp + edx]
mov byte [esi + edx], al
inc edx
cmp ebx, edx
jne 0x411e40
lea edi, [ebp + ebx]
jmp 0x411c40
mov eax, dword [esp + 0x40]
cmp dword [esp + 0xa0], eax
je 0x411e81
mov byte [esi + eax], 0xff
mov eax, dword [esp + 0x40]
add eax, ebp
mov dword [esp + 0x2c], eax
add esi, dword [esp + 0xa0]
add ecx, dword [esp + 0xa0]
mov eax, dword [esp + 0x40]
cmp dword [esp + 0xa0], eax
je 0x411bce
cmp edi, 6
ja case.default.0x411eb3
jmp dword [edi*4 + 0x468128]
mov eax, dword [esp + 0x54]
lea ecx, [esi + eax]
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x411edc
mov al, byte [edi + 0x468390]
and eax, 0xff
mov edi, eax
mov eax, dword [esp + 0x18]
test eax, eax
jg 0x411b76
jmp 0x411b9d
mov eax, dword [esp + 0xa4]
dec eax
je 0x4126f1
mov edi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x18]
lea ebx, [edi + ecx]
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], eax
mov ebp, ecx
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x20]
lea esi, [esi]
nop
test ebp, ebp
jle 0x411f3f
mov ecx, dword [esp + 0x1c]
mov edx, esi
sub edx, edi
lea esi, [esi]
mov al, byte [edx]
shr al, 1
add al, byte [ecx]
mov byte [edx + edi], al
inc ecx
inc edx
cmp ecx, ebx
jne 0x411f30
mov byte [esi + ebp], 0xff
add dword [esp + 0x1c], ebp
add esi, edi
add ebx, ebp
dec dword [esp + 0x24]
jne 0x411f20
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x18]
imul eax, edi
add dword [esp + 0x2c], eax
cmp dword [esp + 0xac], 0x10
jne 0x411c44
mov edi, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
add eax, dword [edi + 0xc]
mov ebx, dword [esp + 0xa4]
test ebx, ebx
je 0x411c44
mov edi, dword [esp + 0x18]
lea edx, [eax + edi + 1]
xor eax, eax
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0xa4]
lea esi, [esi]
mov byte [edx], 0xff
inc eax
add edx, ecx
cmp eax, ebx
jb 0x411fa0
jmp 0x411c44
mov eax, dword [esp + 0x40]
cmp dword [esp + 0xa0], eax
je 0x411fca
mov eax, dword [esp + 0x18]
mov byte [esi + eax], 0xff
mov byte [esi + eax + 1], 0xff
mov eax, dword [esp + 0x18]
add eax, ebp
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x20]
add esi, eax
add ecx, eax
jmp 0x411e99
mov al, byte [edi + 0x468390]
and eax, 0xff
mov edi, eax
mov dword [esp + 0x18], 1
jmp 0x411b76
add eax, eax
mov dword [esp + 0x20], eax
mov ebx, 2
mov esi, 2
jmp 0x411a27
mov eax, 0x4680bb
mov dword [0x46f094], eax
xor eax, eax
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, str.not_enough_pixels
jmp 0x412035
mov ebx, dword [esp + 0xa4]
dec ebx
je 0x4126f1
mov ebp, dword [esp + 0x2c]
mov edi, dword [esp + 0x18]
lea eax, [ebp + edi]
mov dword [esp + 0x3c], eax
mov eax, ecx
mov ecx, dword [esp + 0x20]
sub eax, ecx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x5c], eax
mov eax, edi
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x60], ebp
lea esi, [esi]
lea esi, [esi]
mov edi, dword [esp + 0x5c]
mov ebp, edi
mov ebx, dword [esp + 0x20]
add edi, ebx
mov dword [esp + 0x5c], edi
test eax, eax
jle 0x4123e8
mov edi, dword [esp + 0x60]
mov dword [esp + 0x1c], edi
mov edi, esi
mov ebx, dword [esp + 0x20]
sub edi, ebx
mov dword [esp + 0x68], esi
mov dword [esp + 0x6c], eax
jmp 0x4120f9
cmp eax, esi
jge 0x4120d8
mov dl, byte [esp + 0x30]
add edx, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
mov byte [edi + eax], dl
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
inc ebp
inc edi
mov esi, dword [esp + 0x3c]
cmp eax, esi
je 0x4123e0
mov eax, dword [esp + 0x1c]
mov al, byte [eax]
mov byte [esp + 0x28], al
mov al, byte [ebp]
mov byte [esp + 0x30], al
mov cl, al
and ecx, 0xff
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x20]
mov dl, byte [ebp + eax]
xor ebx, ebx
mov bl, dl
mov al, byte [edi]
mov byte [esp + 0x38], al
mov esi, eax
and esi, 0xff
lea eax, [esi + ebx]
sub eax, ecx
mov ecx, eax
sub ecx, esi
mov esi, ecx
jns 0x412141
neg esi
mov ecx, esi
mov esi, eax
sub esi, ebx
jns 0x412149
neg esi
mov ebx, dword [esp + 0x24]
sub eax, ebx
jns 0x412153
neg eax
cmp esi, ecx
jl 0x4120d0
cmp eax, ecx
jl 0x4120d0
mov dl, byte [esp + 0x38]
jmp 0x4120d8
mov eax, dword [esp + 0xa4]
dec eax
je 0x4126f1
mov ebp, esi
mov edx, dword [esp + 0x20]
sub ebp, edx
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], eax
mov ebx, edx
xor edx, edx
mov eax, dword [esp + 0x18]
test eax, eax
jle 0x4121c0
mov dword [esp + 0x1c], ebx
nop
xor eax, eax
mov al, byte [ecx + edx]
xor ebx, ebx
mov bl, byte [ebp + edx]
add eax, ebx
sar eax, 1
add al, byte [edi + edx]
mov byte [esi + edx], al
inc edx
cmp dword [esp + 0x18], edx
jne 0x4121a0
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
mov byte [esi + eax], 0xff
add edi, eax
add esi, ebx
add ecx, ebx
add ebp, ebx
dec dword [esp + 0x24]
jne 0x412190
jmp 0x411f51
mov edx, dword [esp + 0xa4]
dec edx
je 0x4126f1
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x24], edx
mov dword [esp + 0x1c], edx
mov edi, dword [esp + 0x18]
mov ebp, dword [esp + 0x20]
lea esi, [esi]
xor eax, eax
test edi, edi
jle 0x41221e
lea esi, [esi]
lea esi, [esi]
mov dl, byte [ebx + eax]
add dl, byte [ecx + eax]
mov byte [esi + eax], dl
inc eax
cmp edi, eax
jne 0x412210
mov byte [esi + edi], 0xff
add ebx, edi
add esi, ebp
add ecx, ebp
dec dword [esp + 0x1c]
jne 0x412200
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x18]
imul edx, eax
add dword [esp + 0x2c], edx
cmp dword [esp + 0xac], 0x10
jne 0x411c44
jmp 0x411f6e
mov edx, dword [esp + 0xa4]
dec edx
je 0x4126f1
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x18]
lea ebx, [edi + eax]
mov dword [esp + 0x28], edx
mov dword [esp + 0x24], edx
mov ebp, eax
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x20]
lea esi, [esi]
nop
test ebp, ebp
jle 0x41229d
mov edx, dword [esp + 0x1c]
mov eax, esi
sub eax, edi
lea esi, [esi]
mov cl, byte [edx]
add cl, byte [eax]
mov byte [eax + edi], cl
inc edx
inc eax
cmp ebx, edx
jne 0x412290
mov byte [esi + ebp], 0xff
add dword [esp + 0x1c], ebp
add esi, edi
add ebx, ebp
dec dword [esp + 0x24]
jne 0x412280
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x18]
imul edx, eax
add dword [esp + 0x2c], edx
cmp dword [esp + 0xac], 0x10
jne 0x411c44
jmp 0x411f6e
mov eax, dword [esp + 0xa4]
dec eax
je 0x4126f1
mov ebx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x18]
lea ecx, [ebx + ebp]
mov edi, eax
mov dword [esp + 0x24], eax
test ebp, ebp
jle 0x41230e
mov eax, ebx
mov edx, esi
mov dword [esp + 0x1c], ebx
lea esi, [esi]
mov bl, byte [eax]
mov byte [edx], bl
inc eax
inc edx
cmp ecx, eax
jne 0x412300
mov ebx, dword [esp + 0x1c]
mov byte [esi + ebp], 0xff
add ebx, ebp
mov eax, dword [esp + 0x20]
add esi, eax
add ecx, ebp
dec edi
jne 0x4122f0
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x18]
imul eax, edi
add dword [esp + 0x2c], eax
cmp dword [esp + 0xac], 0x10
jne 0x411c44
jmp 0x411f6e
mov edx, dword [esp + 0xa4]
dec edx
je 0x4126f1
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x18]
lea ebx, [edi + eax]
mov dword [esp + 0x28], edx
mov dword [esp + 0x24], edx
mov ebp, eax
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x20]
lea esi, [esi]
test ebp, ebp
jle 0x41238d
mov edx, dword [esp + 0x1c]
mov eax, esi
sub eax, edi
lea esi, [esi]
mov cl, byte [edx]
add cl, byte [eax]
mov byte [eax + edi], cl
inc edx
inc eax
cmp edx, ebx
jne 0x412380
mov byte [esi + ebp], 0xff
add dword [esp + 0x1c], ebp
add esi, edi
add ebx, ebp
dec dword [esp + 0x24]
jne 0x412370
jmp 0x4122af
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
mov dword [esi], eax
mov eax, dword [edx + ebx - 4]
mov dword [esi + ebx - 4], eax
lea edi, [esi + 4]
and edi, 0xfffffffc
mov eax, esi
sub eax, edi
mov esi, edx
sub esi, eax
lea ecx, [eax + ebx]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
lea edi, [edx + ebx]
jmp 0x411c40
mov esi, dword [esp + 0x68]
mov eax, dword [esp + 0x6c]
mov byte [esi + eax], 0xff
add dword [esp + 0x60], eax
mov edi, dword [esp + 0x20]
add esi, edi
add dword [esp + 0x3c], eax
dec dword [esp + 0x70]
jne 0x412090
mov ebx, dword [esp + 0x7c]
mov eax, dword [esp + 0x18]
imul ebx, eax
add dword [esp + 0x2c], ebx
cmp dword [esp + 0xac], 0x10
jne 0x411c44
jmp 0x411f6e
cmp dword [esp + 0xac], 0x10
je 0x4128a0
mov eax, 1
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, 0x4680e6
jmp 0x412035
mov eax, str.invalid_filter
jmp 0x412035
mov edx, dword [esp + 0x78]
cmp dword [esp + 0xac], 7
jg 0x412426
mov eax, dword [esp + 0x58]
sub edx, eax
mov dword [esp + 0x20], edx
mov edi, dword [esp + 0x74]
lea edx, [edi - 4]
mov eax, edx
shr eax, 2
lea ebx, [eax + 1]
mov dword [esp + 0x38], ebx
shl ebx, 2
mov dword [esp + 0x30], ebx
neg eax
lea eax, [edx + eax*4]
mov dword [esp + 0x3c], eax
lea edx, [edi - 2]
mov eax, edx
shr eax, 1
lea edi, [eax + 1]
mov dword [esp + 0x2c], edi
lea edi, [eax + eax + 2]
mov dword [esp + 0x4c], edi
add eax, eax
sub edx, eax
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0xa4]
add eax, eax
add eax, dword [esp + 0xa4]
mov dword [esp + 0x24], eax
xor ebx, ebx
xor ebp, ebp
mov edi, dword [esp + 0x48]
lea esi, [esi]
mov eax, dword [edi + 0xc]
lea edx, [eax + ebx]
mov esi, dword [esp + 0x20]
lea ecx, [ebx + esi]
add eax, ecx
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0xb0]
test ecx, ecx
jne 0x4125a0
mov eax, dword [esp + 0xac]
mov cl, byte [eax + 0x468384]
cmp dword [esp + 0xac], 4
je 0x4125b0
cmp dword [esp + 0xac], 2
je 0x412635
cmp dword [esp + 0xac], 1
je 0x41270f
mov eax, dword [esp + 0x40]
cmp dword [esp + 0xa0], eax
je 0x412584
mov edx, dword [edi + 0xc]
add edx, ebx
mov eax, dword [esp + 0xa4]
dec eax
cmp dword [esp + 0x40], 1
je 0x412616
test eax, eax
js 0x412584
mov esi, dword [esp + 0x24]
lea ecx, [edx + esi]
mov esi, ebx
lea esi, [esi]
nop
mov byte [edx + eax*4 + 3], 0xff
mov bl, byte [ecx - 1]
mov byte [edx + eax*4 + 2], bl
mov bl, byte [ecx - 2]
mov byte [edx + eax*4 + 1], bl
mov bl, byte [ecx - 3]
mov byte [edx + eax*4], bl
dec eax
sub ecx, 3
cmp eax, 0xffffffff
jne 0x412560
mov ebx, esi
lea eax, [ebp + 1]
mov esi, dword [esp + 0x50]
add ebx, esi
cmp dword [esp + 0x34], ebp
je 0x412434
mov ebp, eax
jmp 0x4124d0
mov cl, 1
cmp dword [esp + 0xac], 4
jne 0x41250d
cmp dword [esp + 0x74], 1
jle 0x4128d7
mov eax, dword [esp + 0x4c]
add eax, edx
mov dword [esp + 0x1c], eax
mov esi, dword [esp + 0x18]
lea esi, [esi]
mov al, byte [esi]
shr al, 4
mul cl
mov byte [edx], al
add edx, 2
mov al, byte [esi]
and eax, 0xf
mul cl
mov byte [edx - 1], al
inc esi
cmp dword [esp + 0x1c], edx
jne 0x4125d0
mov esi, dword [esp + 0x2c]
add dword [esp + 0x18], esi
mov eax, dword [esp + 0x44]
dec eax
jne 0x412529
mov eax, dword [esp + 0x18]
mov al, byte [eax]
shr al, 4
mul cl
mov esi, dword [esp + 0x1c]
mov byte [esi], al
jmp 0x412529
test eax, eax
js 0x412584
nop
mov byte [edx + eax*2 + 1], 0xff
mov cl, byte [edx + eax]
mov byte [edx + eax*2], cl
sub eax, 1
jae 0x412620
jmp 0x412584
cmp dword [esp + 0x74], 3
jle 0x4128e4
mov eax, dword [esp + 0x30]
add eax, edx
mov dword [esp + 0x1c], eax
mov esi, dword [esp + 0x18]
nop
mov al, byte [esi]
shr al, 6
mul cl
mov byte [edx], al
mov al, byte [esi]
shr al, 4
and eax, 3
mul cl
mov byte [edx + 1], al
mov al, byte [esi]
shr al, 2
and eax, 3
mul cl
mov byte [edx + 2], al
add edx, 4
mov al, byte [esi]
and eax, 3
mul cl
mov byte [edx - 1], al
inc esi
cmp dword [esp + 0x1c], edx
jne 0x412650
mov esi, dword [esp + 0x38]
add dword [esp + 0x18], esi
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x28], eax
mov edx, dword [esp + 0x28]
test edx, edx
jle 0x412529
mov esi, dword [esp + 0x18]
mov al, byte [esi]
mov byte [esp + 0x18], al
shr al, 6
mul cl
mov edx, dword [esp + 0x1c]
mov byte [edx], al
cmp dword [esp + 0x28], 1
je 0x412529
mov al, byte [esi]
mov byte [esp + 0x18], al
shr al, 4
and eax, 3
mul cl
mov byte [edx + 1], al
cmp dword [esp + 0x28], 3
jne 0x412529
mov al, byte [esi]
shr al, 2
and eax, 3
mul cl
mov byte [edx + 2], al
jmp 0x412529
cmp dword [esp + 0xac], 0x10
jne 0x411c44
mov edi, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
add eax, dword [edi + 0xc]
jmp 0x411f88
mov eax, dword [esp + 0x74]
cmp eax, 7
jle 0x4128f5
sub eax, 8
mov dword [esp + 0x54], eax
shr eax, 3
mov dword [esp + 0x1c], eax
lea esi, [eax + 1]
mov dword [esp + 0x48], esi
lea eax, [edx + eax*8 + 8]
mov dword [esp + 0x28], eax
mov esi, dword [esp + 0x18]
mov dword [esp + 0x58], ebx
mov ebx, eax
lea esi, [esi]
lea esi, [esi]
mov al, byte [esi]
shr al, 7
mul cl
mov byte [edx], al
mov al, byte [esi]
shr al, 6
and eax, 1
mul cl
mov byte [edx + 1], al
mov al, byte [esi]
shr al, 5
and eax, 1
mul cl
mov byte [edx + 2], al
mov al, byte [esi]
shr al, 4
and eax, 1
mul cl
mov byte [edx + 3], al
mov al, byte [esi]
shr al, 3
and eax, 1
mul cl
mov byte [edx + 4], al
mov al, byte [esi]
shr al, 2
and eax, 1
mul cl
mov byte [edx + 5], al
mov al, byte [esi]
shr al, 1
and eax, 1
mul cl
mov byte [edx + 6], al
add edx, 8
mov al, byte [esi]
and eax, 1
mul cl
mov byte [edx - 1], al
inc esi
cmp edx, ebx
jne 0x412750
mov ebx, dword [esp + 0x58]
mov eax, dword [esp + 0x1c]
neg eax
mov esi, dword [esp + 0x54]
lea eax, [esi + eax*8]
mov dword [esp + 0x1c], eax
mov esi, dword [esp + 0x48]
add dword [esp + 0x18], esi
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x412529
mov esi, dword [esp + 0x18]
mov al, byte [esi]
mov byte [esp + 0x48], al
shr al, 7
mul cl
mov edx, dword [esp + 0x28]
mov byte [edx], al
cmp dword [esp + 0x1c], 1
je 0x412529
mov al, byte [esi]
mov byte [esp + 0x48], al
shr al, 6
and eax, 1
mul cl
mov byte [edx + 1], al
cmp dword [esp + 0x1c], 2
je 0x412529
mov al, byte [esi]
mov byte [esp + 0x48], al
shr al, 5
and eax, 1
mul cl
mov byte [edx + 2], al
cmp dword [esp + 0x1c], 3
je 0x412529
mov al, byte [esi]
mov byte [esp + 0x48], al
shr al, 4
and eax, 1
mul cl
mov byte [edx + 3], al
cmp dword [esp + 0x1c], 4
je 0x412529
mov al, byte [esi]
mov byte [esp + 0x48], al
shr al, 3
and eax, 1
mul cl
mov byte [edx + 4], al
cmp dword [esp + 0x1c], 5
je 0x412529
mov al, byte [esi]
mov byte [esp + 0x48], al
shr al, 2
and eax, 1
mul cl
mov byte [edx + 5], al
cmp dword [esp + 0x1c], 7
jne 0x412529
mov al, byte [esi]
shr al, 1
and eax, 1
mul cl
mov byte [edx + 6], al
jmp 0x412529
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0xc]
mov eax, dword [esp + 0xa4]
imul eax, dword [esp + 0xa8]
imul eax, dword [esp + 0xa0]
test eax, eax
je 0x412434
xor edx, edx
rol word [ecx + edx*2], 8
inc edx
cmp eax, edx
jne 0x4128c8
jmp 0x412434
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x74]
jmp 0x4125f9
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x74]
mov dword [esp + 0x28], eax
jmp 0x412697
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x74]
mov dword [esp + 0x1c], eax
jmp 0x4127d5