Function at 0x43c270
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x6db750
mov eax, dword fs:[0]
push eax
sub esp, 0xd8
push ebx
push esi
push edi
mov eax, dword [0x79a200]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov edi, ecx
mov dword [ebp - 0x2c], edi
push 0x776078
push dword [ebp + 8]
call fcn.00447240
mov esi, eax
mov dword [ebp - 0x28], 0
add esp, 8
mov dword [ebp - 0x44], esi
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x40], 1
mov dword [ebp - 0x48], 1
mov dword [ebp - 0x74], 0xffffffff
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x90], 1
mov dword [ebp - 0x98], 1
mov dword [ebp - 4], 0
test esi, esi
je 0x43d65c
push esi
call fcn.0050b550
movzx eax, ax
mov dword [edi + 0x160], eax
movzx eax, word [edi + 0x15c]
push eax
push esi
call fcn.0050b5c0
add esp, 0xc
test eax, eax
je 0x43d677
lea eax, [ebp - 0x24]
push eax
push 0x100
push esi
call fcn.0050b4f0
lea eax, [ebp - 0x28]
push eax
push 0x101
push esi
call fcn.0050b4f0
lea eax, [ebp - 0x48]
push eax
push 0x115
push esi
call fcn.0050b4f0
lea eax, [ebp - 0x40]
push eax
push 0x102
push esi
call fcn.0050b4f0
lea eax, [ebp - 0x74]
push eax
push 0x116
push esi
call fcn.0050b4f0
lea eax, [ebp - 0x7c]
push eax
push 0x106
push esi
call fcn.0050b4f0
add esp, 0x48
lea eax, [ebp - 0x98]
push eax
push 0x112
push esi
call fcn.0050b4f0
add esp, 0xc
cmp dword [edi + 0x148], 0xffffffff
je 0x43d692
lea eax, [ebp + 8]
push eax
push 0x128
push esi
call fcn.0050d6c0
lea eax, [ebp - 0x70]
push eax
push 0x11a
push esi
call fcn.0050b4f0
add esp, 0x18
test eax, eax
je 0x43c3fe
cmp word [ebp + 8], 3
movss xmm0, dword [ebp - 0x70]
jne 0x43c3f2
mulss xmm0, dword [0x6ec420]
addss xmm0, dword [0x776828]
movss dword [ebp - 0x70], xmm0
cvttss2si eax, xmm0
mov ecx, edi
push eax
call fcn.004363d0
lea eax, [ebp - 0x70]
push eax
push 0x11b
push esi
call fcn.0050b4f0
add esp, 0xc
test eax, eax
je 0x43c441
cmp word [ebp + 8], 3
movss xmm0, dword [ebp - 0x70]
jne 0x43c435
mulss xmm0, dword [0x6ec420]
addss xmm0, dword [0x776828]
movss dword [ebp - 0x70], xmm0
cvttss2si eax, xmm0
mov ecx, edi
push eax
call fcn.00436440
lea eax, [ebp - 0x8c]
push eax
push 0x11e
push esi
call fcn.0050b4f0
add esp, 0xc
test eax, eax
je 0x43c468
cvttss2si eax, dword [ebp - 0x8c]
mov dword [edi + 0x184], eax
lea eax, [ebp - 0x8c]
push eax
push 0x11f
push esi
call fcn.0050b4f0
add esp, 0xc
test eax, eax
je 0x43c48f
cvttss2si eax, dword [ebp - 0x8c]
mov dword [edi + 0x188], eax
mov ecx, dword [ebp - 0x28]
mov dword [edi + 0x28], 0
mov dword [edi + 0x14c], 0xffffffff
mov dword [ebp - 0x38], ecx
cmp dword [ebp - 0x74], ecx
jbe 0x43c4c3
push ecx
push 0x116
push esi
mov dword [ebp - 0x74], ecx
call fcn.0050b660
mov eax, dword [ebp - 0x28]
add esp, 0xc
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x7c]
cmp ax, 2
je 0x43c553
cmp ax, 6
je 0x43c553
cmp ax, 5
je 0x43c553
mov ecx, 0x804c
cmp ax, cx
je 0x43c553
mov ecx, 0x804d
cmp ax, cx
je 0x43c553
cmp ax, 1
je 0x43c518
test ax, ax
je 0x43c518
cmp ax, 3
je 0x43c518
mov edx, dword [ebp - 0x40]
xor esi, esi
cmp dx, 4
jne 0x43c531
lea eax, [esi + 4]
mov dword [edi + 0x28], 0x10
jmp 0x43c55d
mov edx, dword [ebp - 0x40]
cmp dx, 1
jne 0x43c504
mov eax, 1
mov dword [edi + 0x28], 2
xor esi, esi
jmp 0x43c55d
mov ecx, 8
mov word [edi + 0x16], cx
mov dword [edi + 0x28], 0x100
cmp dx, cx
jbe 0x43c563
xor esi, esi
cmp ax, 3
jne 0x43c563
mov dword [edi + 0x28], esi
jmp 0x43c558
mov esi, 1
mov eax, 0x18
mov word [edi + 0x16], ax
mov ecx, eax
cmp dword [edi + 0x148], 0
jne 0x43d6c0
push 6
push ecx
push dword [ebp - 0x38]
mov ecx, edi
push dword [ebp - 0x24]
call fcn.00434a30
cmp dword [edi + 4], 0
je 0x43d6db
mov eax, dword [ebp - 0x48]
cmp ax, 4
jne 0x43c59d
mov ecx, edi
call fcn.00441270
mov eax, dword [ebp - 0x48]
cmp ax, 2
jne 0x43c5b1
cmp word [ebp - 0x40], 8
jne 0x43c5b1
mov ecx, edi
call fcn.00441270
lea eax, [ebp - 0x90]
push eax
push 0x103
push dword [ebp - 0x44]
call fcn.0050b4f0
movzx eax, word [ebp - 0x90]
add esp, 0xc
mov ecx, edi
push 0
push eax
call fcn.004362b0
test esi, esi
je 0x43c6c2
mov eax, dword [ebp - 0x24]
imul eax, dword [ebp - 0x28]
shl eax, 2
push eax
call fcn.0050aa20
mov esi, eax
add esp, 4
mov dword [ebp - 0x6c], esi
test esi, esi
je 0x43d6f6
push 1
push esi
push dword [ebp - 0x28]
push dword [ebp - 0x24]
push dword [ebp - 0x44]
call fcn.00516280
add esp, 0x14
test eax, eax
je 0x43d711
mov eax, dword [ebp - 0x24]
mov ecx, esi
mov dword [ebp - 0x38], esi
xor edx, edx
mov esi, dword [edi + 0x34]
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x1c], esi
cmp edx, dword [ebp - 0x28]
jae 0x43c696
cmp dword [edi + 0x148], 0
jne 0x43d735
xor edi, edi
cmp edi, eax
jae 0x43c684
movzx eax, byte [ecx + edi*4 + 2]
mov byte [esi], al
movzx eax, byte [ecx + edi*4 + 1]
mov byte [esi + 1], al
movzx eax, byte [ecx + edi*4]
mov byte [esi + 2], al
add esi, 3
cmp word [ebp - 0x48], 4
jne 0x43c67e
movzx eax, byte [ecx + edi*4 + 3]
mov ecx, dword [ebp - 0x2c]
push eax
push edx
push edi
call fcn.004415b0
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x58]
mov eax, dword [ebp - 0x24]
inc edi
jmp 0x43c644
mov edi, dword [ebp - 0x2c]
lea ecx, [ecx + eax*4]
mov esi, dword [ebp - 0x1c]
mov dword [ebp - 0x38], ecx
add esi, dword [edi + 0x30]
inc edx
jmp 0x43c62a
push dword [ebp - 0x6c]
call fcn.004d1500
add esp, 4
push dword [ebp - 0x44]
call fcn.0050ac40
add esp, 4
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [ebp - 0x40]
cmp cx, 8
jbe 0x43c6f1
cmp word [ebp - 0x7c], 3
jne 0x43c6f1
mov dword [ebp - 0x4c], 1
mov esi, 1
mov dword [ebp - 0x3c], esi
cmp cx, 0x18
ja 0x43d75b
mov eax, esi
shl eax, cl
jmp 0x43c702
xor esi, esi
mov dword [ebp - 0x4c], 0
mov eax, 0x100
mov dword [ebp - 0x3c], esi
push 4
push eax
call fcn.0069babe
add esp, 8
mov dword [ebp - 0x30], eax
test eax, eax
je 0x43d776
mov eax, dword [ebp - 0x40]
movzx edx, ax
cmp ax, 8
jbe 0x43c729
mov edx, 8
mov ecx, dword [ebp - 0x7c]
movzx ecx, cx
mov dword [ebp - 0x18], edx
sub ecx, 0
je 0x43c933
sub ecx, 1
je 0x43c933
sub ecx, 2
jne 0x43c9e4
lea eax, [ebp - 0x6c]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x5c]
push eax
push pe_nt_image_headers32
push dword [ebp - 0x44]
call fcn.0050b4f0
mov eax, dword [ebp - 0x4c]
add esp, 0x14
mov ecx, eax
mov dword [ebp - 0x14], ecx
test eax, eax
jne 0x43c7fc
mov ecx, dword [ebp - 0x18]
mov edx, 1
shl edx, cl
test edx, edx
jle 0x43c7ee
mov ecx, dword [ebp - 0x5c]
sub ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x38], ecx
mov ecx, dword [ebp - 0x6c]
mov dword [ebp - 0x34], ecx
sub ecx, dword [ebp - 0x20]
lea eax, [eax + edx*2]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x38]
mov edi, 0x100
lea eax, [eax - 2]
dec edx
cmp word [ecx + eax], di
mov edi, dword [ebp - 0x2c]
jae 0x43c7e4
mov edi, 0x100
cmp word [eax], di
mov edi, dword [ebp - 0x2c]
jae 0x43c7e4
mov esi, dword [ebp - 0x1c]
mov edi, 0x100
cmp word [esi + eax], di
mov esi, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x2c]
jae 0x43c7e4
test edx, edx
jg 0x43c7a5
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
jmp 0x43c80d
mov edx, dword [ebp - 0x18]
mov eax, 1
jmp 0x43c80d
mov eax, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x14]
jmp 0x43c80d
mov eax, dword [ebp - 0x40]
movzx edx, ax
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x34], eax
mov eax, ecx
mov dword [ebp - 0x14], ecx
mov ecx, edx
mov edx, 1
shl edx, cl
sub edx, 1
mov dword [ebp - 0x38], edx
js 0x43c9e4
test eax, eax
mov eax, dword [ebp - 0x20]
lea ecx, [eax + edx*2]
mov eax, dword [ebp - 0x30]
lea eax, [eax + edx*4]
je 0x43c8e6
mov edx, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x5c]
sub eax, edx
mov dword [ebp - 0x14], ecx
sub dword [ebp - 0x34], edx
mov dword [ebp - 0x54], eax
nop dword [eax + eax]
movzx eax, word [ecx + eax]
imul ecx, eax, 0xff
mov eax, 0x80008001
imul ecx
add edx, ecx
mov ecx, dword [ebp - 0x50]
sar edx, 0xf
mov eax, edx
shr eax, 0x1f
add eax, edx
mov byte [ecx + 1], al
mov eax, dword [ebp - 0x14]
movzx eax, word [eax]
imul ecx, eax, 0xff
mov eax, 0x80008001
imul ecx
add edx, ecx
mov ecx, dword [ebp - 0x50]
sar edx, 0xf
mov eax, edx
shr eax, 0x1f
add eax, edx
mov byte [ecx], al
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x34]
movzx eax, word [eax + ecx]
imul ecx, eax, 0xff
mov eax, 0x80008001
imul ecx
add edx, ecx
mov ecx, dword [ebp - 0x14]
sar edx, 0xf
sub ecx, 2
mov eax, edx
mov dword [ebp - 0x14], ecx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0x50]
mov byte [edx - 1], al
sub edx, 4
mov eax, dword [ebp - 0x38]
dec eax
mov dword [ebp - 0x50], edx
mov dword [ebp - 0x38], eax
test eax, eax
mov eax, dword [ebp - 0x54]
jns 0x43c850
jmp 0x43c9e4
mov edi, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x5c]
sub eax, edi
sub dword [ebp - 0x34], edi
mov edi, dword [ebp - 0x2c]
mov dword [ebp - 0x54], eax
nop dword [eax + eax]
mov esi, dword [ebp - 0x14]
lea ecx, [ecx - 2]
movzx eax, byte [ecx + eax + 2]
sub dword [ebp - 0x14], 4
sub edx, 1
mov byte [esi + 1], al
movzx eax, byte [ecx + 2]
mov byte [esi], al
mov eax, dword [ebp - 0x34]
movzx eax, byte [ecx + eax + 2]
mov byte [esi - 1], al
mov esi, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x54]
jns 0x43c900
jmp 0x43c9e4
cmp ax, 1
jne 0x43c962
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x18]
cmp word [ebp - 0x7c], ax
jne 0x43c954
mov word [edx + 4], 0xffff
mov byte [edx + 6], 0xff
jmp 0x43c9ea
mov word [edx], 0xffff
mov byte [edx + 2], 0xff
jmp 0x43c9ea
mov ecx, edx
mov eax, 1
rol eax, cl
mov edx, 1
mov ecx, dword [ebp - 0x18]
shl edx, cl
mov dword [ebp - 0x38], edx
test edx, edx
jle 0x43c9e7
cmp word [ebp - 0x7c], 1
lea ecx, [eax - 1]
jne 0x43c9b6
mov eax, 0xff
cdq
idiv ecx
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp - 0x38]
add ecx, 2
mov dword [ebp - 0x1c], eax
xor eax, eax
nop dword [eax]
mov byte [ecx - 2], al
lea ecx, [ecx + 4]
mov byte [ecx - 5], al
mov byte [ecx - 4], al
add eax, dword [ebp - 0x1c]
sub edx, 1
jne 0x43c9a0
jmp 0x43c9e4
mov eax, 0xffffff01
cdq
idiv ecx
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
add edx, 2
mov dword [ebp - 0x1c], eax
mov eax, 0xff
nop
mov byte [edx - 2], al
lea edx, [edx + 4]
mov byte [edx - 5], al
mov byte [edx - 4], al
add eax, dword [ebp - 0x1c]
sub ecx, 1
jne 0x43c9d0
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x30]
cmp dword [ebp - 0x4c], 0
jne 0x43ca13
mov eax, 1
shl eax, cl
mov ecx, edi
push eax
push edx
call fcn.00437140
mov eax, dword [ebp - 0x30]
push eax
call fcn.0069ba2b
add esp, 4
mov dword [ebp - 0x30], 0
mov eax, dword [ebp - 0x40]
movzx ecx, word [ebp - 0x48]
push dword [ebp - 0x44]
movzx eax, ax
imul ecx, eax
imul ecx, dword [ebp - 0x24]
add ecx, 7
shr ecx, 3
mov dword [ebp - 0x54], ecx
call fcn.0050e2f0
movzx ecx, word [ebp - 0x48]
add esp, 4
imul ecx, dword [edi + 0x1c]
cmp eax, ecx
cmovg eax, ecx
mov ecx, dword [edi + 0x30]
imul ecx, dword [ebp - 0x74]
cmp eax, ecx
cmovge ecx, eax
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x20], ecx
cmp ax, 8
jbe 0x43ca75
mov dword [ebp - 0x20], ecx
cmp ax, 0x10
je 0x43ca75
movzx eax, ax
add eax, 7
shr eax, 3
imul eax, ecx
mov dword [ebp - 0x20], eax
push dword [ebp - 0x44]
call fcn.0050f300
add esp, 4
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x88], 0
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x5c], 0
test eax, eax
je 0x43cb03
lea eax, [ebp - 0x88]
push eax
push 0x142
push dword [ebp - 0x44]
call fcn.0050b4f0
lea eax, [ebp - 0x94]
push eax
push 0x143
push dword [ebp - 0x44]
call fcn.0050b4f0
mov eax, dword [ebp - 0x94]
push dword [ebp - 0x44]
mov dword [ebp - 0x74], eax
call fcn.0050e930
mov ecx, eax
xor edx, edx
mov eax, dword [ebp - 0x24]
div dword [ebp - 0x88]
push dword [ebp - 0x44]
inc eax
imul ecx, eax
mov dword [ebp - 0x20], ecx
call fcn.0050e930
push eax
call fcn.006a8b3a
add esp, 0x24
mov dword [ebp - 0x5c], eax
cmp word [ebp - 0x40], 0x10
mov eax, dword [ebp - 0x20]
jne 0x43cb0f
add eax, eax
push eax
call fcn.006a8b3a
mov edx, eax
add esp, 4
xor eax, eax
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x6c], eax
cmp dword [ebp - 0x38], eax
jne 0x43cb62
cmp word [ebp - 0x40], 0x10
jne 0x43cb62
mov eax, dword [ebp - 0x54]
push dword [ebp - 0x20]
mov dword [ebp - 0x6c], eax
movzx eax, word [ebp - 0x48]
imul eax, dword [ebp - 0x24]
mov dword [ebp - 0x68], edx
lea eax, [eax*8 + 7]
shr eax, 3
mov dword [ebp - 0x54], eax
call fcn.006a8b3a
mov edx, eax
add esp, 4
mov eax, dword [ebp - 0x68]
mov dword [ebp - 0x18], edx
test edx, edx
je 0x43d791
mov dword [ebp - 0x34], 0
test eax, eax
je 0x43cb86
push dword [ebp - 0x28]
call fcn.006a8b3a
mov edx, dword [ebp - 0x18]
add esp, 4
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x74]
xor eax, eax
mov dword [ebp - 0xd4], 8
mov dword [ebp - 0x64], eax
cmp eax, dword [ebp - 0x28]
jae 0x43cca5
cmp dword [edi + 0x148], 0
jne 0x43d7d9
mov edi, dword [ebp - 0x28]
add eax, ecx
mov dword [ebp - 0x60], edi
cmp eax, edi
mov edi, dword [ebp - 0x2c]
jbe 0x43cbc3
mov ecx, dword [ebp - 0x60]
sub ecx, dword [ebp - 0x64]
cmp dword [ebp - 0x38], 0
mov dword [ebp - 0x60], ecx
je 0x43cc66
push dword [ebp - 0x44]
call fcn.0050e140
push dword [ebp - 0x44]
mov esi, eax
mov dword [ebp - 0x20], esi
call fcn.0050e830
sub esi, eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], esi
add esp, 8
xor esi, esi
xor eax, eax
mov dword [ebp - 0x58], eax
cmp eax, dword [ebp - 0x24]
jae 0x43ce19
push 0
push 0
push dword [ebp - 0x64]
push eax
push dword [ebp - 0x5c]
push dword [ebp - 0x44]
call fcn.0051d310
add esp, 0x18
test eax, eax
js 0x43d7fd
mov eax, dword [ebp - 0x88]
mov ecx, dword [ebp - 0x20]
add eax, esi
mov edx, dword [ebp - 0x1c]
cmp eax, ecx
jbe 0x43cc3d
mov eax, ecx
mov ecx, dword [ebp - 0x14]
sub eax, esi
sub ecx, eax
add edx, ecx
jmp 0x43cc42
mov eax, dword [ebp - 0x14]
xor ecx, ecx
push ecx
push edx
push eax
push dword [ebp - 0x60]
mov eax, dword [ebp - 0x18]
mov ecx, edi
push dword [ebp - 0x5c]
add eax, esi
push eax
call fcn.0043daa0
mov eax, dword [ebp - 0x58]
add esi, dword [ebp - 0x14]
add eax, dword [ebp - 0x88]
jmp 0x43cbf4
cmp dword [ebp - 0x68], 0
mov eax, dword [ebp - 0x54]
cmovne eax, dword [ebp - 0x6c]
imul eax, ecx
mov ecx, dword [ebp - 0x68]
test ecx, ecx
push eax
mov eax, edx
cmovne eax, ecx
push eax
push 0
push dword [ebp - 0x64]
push dword [ebp - 0x44]
call fcn.0050e080
add esp, 0xc
push eax
push dword [ebp - 0x44]
call fcn.0051cd40
add esp, 0x10
cmp eax, 0xffffffff
jne 0x43ce1c
push dword [ebp - 0x18]
call fcn.0069ba2b
mov eax, dword [ebp - 0x68]
add esp, 4
test eax, eax
je 0x43ccc0
push eax
call fcn.0069ba2b
add esp, 4
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x43cdde
cmp word [ebp - 0x48], 1
jne 0x43cdd5
cmp word [ebp - 0x40], 0x10
jne 0x43cdd5
test esi, esi
jne 0x43cdd5
mov edx, dword [ebp - 0x28]
xor ecx, ecx
mov esi, 8
test edx, edx
je 0x43cd83
cmp edx, esi
jb 0x43cd64
cmp dword [0x7acfd4], 2
jl 0x43cd64
movaps xmm1, xmmword [str._b_b_b_b]
mov eax, edx
mov esi, dword [ebp - 0x34]
and eax, 0xfffffff8
movaps xmm2, xmm1
nop word [eax + eax]
pmovzxbd xmm0, dword [esi + ecx]
pminsd xmm1, xmm0
pmovzxbd xmm0, dword [esi + ecx + 4]
add ecx, 8
pminsd xmm2, xmm0
cmp ecx, eax
jb 0x43cd20
mov eax, dword [ebp - 0x34]
pminsd xmm1, xmm2
movaps xmm0, xmm1
psrldq xmm0, 8
pminsd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
pminsd xmm1, xmm0
movd esi, xmm1
cmp ecx, edx
jae 0x43cd83
nop dword [eax + eax]
movzx eax, byte [eax + ecx]
cmp esi, eax
cmovle eax, esi
inc ecx
mov esi, eax
mov eax, dword [ebp - 0x34]
cmp ecx, edx
jb 0x43cd70
xor eax, eax
mov dword [ebp - 0x1c], eax
test edx, edx
je 0x43cdd2
mov ecx, dword [ebp - 0x24]
nop
mov edi, dword [ebp - 0x34]
movzx eax, byte [edi + eax]
mov edi, dword [ebp - 0x2c]
cmp esi, eax
jge 0x43cdc7
sub eax, esi
xor edx, edx
mov dword [ebp - 0x78], eax
mov eax, dword [edi + 0x30]
imul eax, dword [ebp - 0x1c]
add eax, dword [edi + 0x34]
test ecx, ecx
je 0x43cdc4
mov cl, byte [ebp - 0x78]
lea eax, [eax + 1]
shr byte [eax - 1], cl
inc edx
mov ecx, dword [ebp - 0x24]
cmp edx, ecx
jb 0x43cdb3
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x1c]
inc eax
mov dword [ebp - 0x1c], eax
cmp eax, edx
jb 0x43cd90
mov eax, dword [ebp - 0x34]
push eax
call fcn.0069ba2b
add esp, 4
cmp dword [ebp - 0x38], 0
je 0x43cdef
push dword [ebp - 0x5c]
call fcn.0069ba2b
add esp, 4
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x43cdff
push eax
call fcn.0069ba2b
add esp, 4
movzx eax, word [ebp - 0x98]
add eax, 0xfffffffe
cmp eax, 6
ja case.default.0x43ce12
jmp dword [eax*4 + 0x43d82c]
mov esi, dword [ebp - 0x3c]
xor ecx, ecx
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x20], ecx
cmp ecx, eax
jae 0x43d46e
mov edx, dword [ebp - 0x54]
sub eax, ecx
lea ecx, [eax - 1]
mov eax, edx
imul eax, ecx
cmp word [ebp - 0x40], 0x10
mov dword [ebp - 0x78], ecx
mov dword [ebp - 0x50], eax
jne 0x43cf63
test esi, esi
jne 0x43cf63
mov eax, dword [ebp - 0x6c]
imul eax, ecx
mov dword [ebp - 0x80], eax
cmp dword [ebp - 0x68], esi
je 0x43cf29
mov edi, dword [ebp - 0x68]
xor ch, ch
add edi, eax
mov dword [ebp - 0x14], edi
test edx, edx
je 0x43cea1
lea eax, [edi + 1]
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x1c], eax
nop dword [eax + eax]
mov cl, byte [eax]
cmp cl, ch
movzx eax, ch
movzx edx, cl
cmovbe edx, eax
mov eax, dword [ebp - 0x1c]
add eax, 2
mov ch, dl
sub dword [ebp - 0x58], 1
mov dword [ebp - 0x1c], eax
jne 0x43ce80
mov eax, dword [ebp - 0x80]
xor edx, edx
test ch, ch
cmove edx, dword [ebp - 0xd4]
je 0x43cec0
mov dword [ebp - 0x14], edi
js 0x43cec0
inc edx
add ch, ch
jns 0x43ceb3
mov edi, dword [ebp - 0x68]
add edi, eax
mov dword [ebp - 0x14], edi
mov ecx, dword [ebp - 0x34]
sub ecx, dword [ebp - 0x60]
sub ecx, dword [ebp - 0x64]
add ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x1c], 0
mov byte [ecx + eax], dl
mov ecx, 8
sub ecx, edx
mov edx, dword [ebp - 0x54]
mov dword [ebp - 0x80], ecx
test edx, edx
je 0x43cf24
nop word [eax + eax]
movzx edx, byte [edi + 1]
movzx eax, byte [edi]
mov esi, dword [ebp - 0x50]
add esi, dword [ebp - 0x18]
mov edi, dword [ebp - 0x14]
shl edx, 8
add edi, 2
or edx, eax
mov dword [ebp - 0x14], edi
mov eax, dword [ebp - 0x1c]
sar edx, cl
mov ecx, dword [ebp - 0x80]
mov byte [eax + esi], dl
inc eax
mov edx, dword [ebp - 0x54]
mov esi, dword [ebp - 0x3c]
mov dword [ebp - 0x1c], eax
cmp eax, edx
jb 0x43cef0
mov edi, dword [ebp - 0x2c]
jmp 0x43cf63
xor ecx, ecx
cmp dword [ebp - 0x24], ecx
jbe 0x43cf63
mov edx, dword [ebp - 0x50]
inc edx
add edx, dword [ebp - 0x18]
mov dword [ebp - 0x1c], edx
nop word [eax + eax]
mov esi, dword [ebp - 0x50]
add esi, dword [ebp - 0x18]
mov al, byte [edx]
mov edx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x2c]
add edx, 2
mov byte [ecx + esi], al
inc ecx
mov esi, dword [ebp - 0x3c]
mov dword [ebp - 0x1c], edx
cmp ecx, dword [ebp - 0x24]
jb 0x43cf40
mov edx, dword [ebp - 0x54]
cmp word [ebp - 0x48], 1
jne 0x43d060
test esi, esi
je 0x43cfe3
mov ecx, dword [ebp - 0x20]
push dword [ebp - 0x30]
sub ecx, dword [ebp - 0x60]
movzx eax, word [ebp - 0x40]
sub ecx, dword [ebp - 0x64]
cmp dword [ebp - 0x68], 0
mov edx, dword [edi + 0x30]
mov esi, dword [edi + 0x34]
push eax
push dword [ebp - 0x24]
je 0x43cfbb
mov eax, dword [ebp - 0x78]
imul eax, dword [ebp - 0x6c]
add eax, dword [ebp - 0x68]
push eax
mov eax, dword [ebp - 0x28]
add eax, ecx
mov ecx, edi
imul eax, edx
add eax, esi
push eax
call fcn.0043d9e0
mov ecx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x3c]
inc ecx
jmp 0x43ce1e
mov eax, dword [ebp - 0x18]
add eax, dword [ebp - 0x50]
mov edi, dword [ebp - 0x2c]
push eax
mov eax, dword [ebp - 0x28]
add eax, ecx
mov ecx, edi
imul eax, edx
add eax, esi
push eax
call fcn.0043d9e0
mov ecx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x3c]
inc ecx
jmp 0x43ce1e
mov eax, dword [ebp - 0x40]
cmp ax, word [edi + 0x16]
je 0x43d027
cmp ax, 0x10
je 0x43d027
movzx eax, ax
mov ecx, edi
push eax
push dword [ebp - 0x24]
mov eax, dword [ebp - 0x18]
add eax, dword [ebp - 0x50]
push eax
mov eax, dword [ebp - 0x20]
sub eax, dword [ebp - 0x60]
sub eax, dword [ebp - 0x64]
add eax, dword [ebp - 0x28]
imul eax, dword [edi + 0x30]
add eax, dword [edi + 0x34]
push eax
call fcn.0043d850
mov ecx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x3c]
inc ecx
jmp 0x43ce1e
mov ecx, dword [edi + 0x30]
mov eax, edx
cmp edx, ecx
cmovae eax, ecx
push eax
mov eax, dword [ebp - 0x18]
add eax, dword [ebp - 0x50]
push eax
mov eax, dword [ebp - 0x20]
sub eax, dword [ebp - 0x60]
sub eax, dword [ebp - 0x64]
add eax, dword [ebp - 0x28]
imul eax, ecx
add eax, dword [edi + 0x34]
push eax
call fcn.00690890
mov ecx, dword [ebp - 0x20]
add esp, 0xc
mov esi, dword [ebp - 0x3c]
inc ecx
jmp 0x43ce1e
cmp word [ebp - 0x48], 2
jne 0x43d0db
mov edi, dword [ebp - 0x20]
xor eax, eax
sub edi, dword [ebp - 0x60]
xor esi, esi
mov ecx, dword [ebp - 0x2c]
sub edi, dword [ebp - 0x64]
add edi, dword [ebp - 0x28]
mov dword [ebp - 0x14], eax
cmp dword [ecx + 0x3c4], eax
jne 0x43d090
call fcn.00441270
mov ecx, dword [ebp - 0x2c]
mov eax, esi
nop
cmp eax, dword [ebp - 0x54]
jge 0x43d45f
add eax, dword [ebp - 0x50]
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x78], eax
movzx eax, byte [eax + edx]
push eax
push edi
push esi
call fcn.004372a0
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x78]
movzx eax, byte [eax + ecx + 1]
mov ecx, dword [ebp - 0x2c]
push eax
push edi
push esi
call fcn.004415b0
mov eax, dword [ebp - 0x14]
inc esi
mov ecx, dword [ebp - 0x2c]
add eax, 2
mov dword [ebp - 0x14], eax
cmp esi, dword [ebp - 0x24]
jl 0x43d090
dec edi
xor esi, esi
jmp 0x43d090
cmp word [edi + 0x16], 0x18
je 0x43d101
push 6
push 0x18
push dword [ebp - 0x28]
mov ecx, edi
push dword [ebp - 0x24]
call fcn.00434a30
cmp word [ebp - 0x48], 4
jne 0x43d101
mov ecx, edi
call fcn.00441270
mov ecx, dword [ebp - 0x20]
xor eax, eax
sub ecx, dword [ebp - 0x60]
sub ecx, dword [ebp - 0x64]
add ecx, dword [ebp - 0x28]
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x14], ecx
nop dword [eax + eax]
cmp eax, dword [ebp - 0x24]
jae 0x43d462
movzx edx, word [ebp - 0x48]
mov ecx, dword [ebp - 0x18]
imul edx, eax
movsd xmm1, qword [0x6ec410]
add edx, dword [ebp - 0x50]
mov dword [ebp - 0x78], edx
movzx eax, byte [edx + ecx]
movzx esi, byte [edx + ecx + 1]
movzx edi, byte [edx + ecx + 2]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
divsd xmm0, qword [0x6ec408]
addsd xmm0, qword [0x6ec430]
divsd xmm0, qword [0x6ec438]
movsd qword [ebp - 0x84], xmm0
call fcn.006a8f50
movsd xmm1, qword [0x6ec410]
lea eax, [esi - 0x100]
cmp esi, 0x7f
movsd qword [ebp - 0xa0], xmm0
cmovbe eax, esi
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x6ec388]
addsd xmm0, qword [ebp - 0x84]
call fcn.006a8f50
mulsd xmm0, qword [0x6ec3d0]
lea eax, [edi - 0x100]
cmp edi, 0x7f
cmovbe eax, edi
movsd qword [ebp - 0xdc], xmm0
movsd xmm0, qword [ebp - 0x84]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
mulsd xmm1, qword [0x6ec398]
subsd xmm0, xmm1
movsd xmm1, qword [0x6ec410]
call fcn.006a8f50
movsd xmm5, qword [ebp - 0xdc]
movaps xmm2, xmm0
movsd xmm3, qword [ebp - 0xa0]
movaps xmm4, xmm5
mulsd xmm2, qword [0x6ec3f0]
movaps xmm1, xmm3
mulsd xmm1, qword [0x6ec3f8]
movaps xmm0, xmm5
mulsd xmm4, qword [0x6ec418]
mulsd xmm0, qword [0x6ec3d8]
mulsd xmm5, qword [0x6ec3b0]
subsd xmm4, xmm1
movaps xmm1, xmm2
mulsd xmm1, qword [0x6ec3c8]
subsd xmm4, xmm1
movaps xmm1, xmm3
mulsd xmm1, qword [0x6ec400]
mulsd xmm3, qword [0x6ec3b8]
comisd xmm4, xmmword [0x6ec390]
subsd xmm1, xmm0
movaps xmm0, xmm2
mulsd xmm0, qword [0x6ec3a0]
subsd xmm5, xmm3
mulsd xmm2, qword [0x6ec3e8]
addsd xmm1, xmm0
addsd xmm5, xmm2
movsd qword [ebp - 0x84], xmm1
movsd qword [ebp - 0xdc], xmm5
jbe 0x43d2db
movsd xmm1, qword [0x6ec3c0]
movaps xmm0, xmm4
call fcn.006a8f50
mulsd xmm0, qword [0x6ec3e0]
movsd xmm1, qword [ebp - 0x84]
subsd xmm0, qword [0x6ec3a8]
movsd qword [ebp - 0xa0], xmm0
movsd xmm0, qword [str.p_n]
jmp 0x43d2ef
movsd xmm0, qword [str.p_n]
mulsd xmm4, xmm0
movsd qword [ebp - 0xa0], xmm4
movsd xmm2, qword [0x6ec390]
comisd xmm1, xmm2
jbe 0x43d337
movaps xmm0, xmm1
movsd xmm1, qword [0x6ec3c0]
call fcn.006a8f50
mulsd xmm0, qword [0x6ec3e0]
movsd xmm2, qword [0x6ec390]
subsd xmm0, qword [0x6ec3a8]
movsd qword [ebp - 0x84], xmm0
movsd xmm0, qword [str.p_n]
jmp 0x43d343
mulsd xmm1, xmm0
movsd qword [ebp - 0x84], xmm1
movsd xmm1, qword [ebp - 0xdc]
comisd xmm1, xmm2
jbe 0x43d376
movaps xmm0, xmm1
movsd xmm1, qword [0x6ec3c0]
call fcn.006a8f50
movaps xmm1, xmm0
mulsd xmm1, qword [0x6ec3e0]
subsd xmm1, qword [0x6ec3a8]
jmp 0x43d37a
mulsd xmm1, xmm0
movsd xmm0, qword [ebp - 0xa0]
movsd xmm2, qword [0x6ec440]
mulsd xmm0, xmm2
cvttsd2si eax, xmm0
cmp eax, 0xff
jle 0x43d39f
mov byte [ebp - 0x4a], 0xff
jmp 0x43d3af
test eax, eax
jns 0x43d3ac
mov esi, dword [ebp - 0x3c]
mov byte [ebp - 0x4a], 0
jmp 0x43d3b5
mov byte [ebp - 0x4a], al
mov esi, dword [ebp - 0x3c]
mov dword [ebp - 0x3c], esi
movsd xmm0, qword [ebp - 0x84]
mulsd xmm0, xmm2
cvttsd2si eax, xmm0
cmp eax, 0xff
jle 0x43d3d2
mov byte [ebp - 0x4b], 0xff
jmp 0x43d3df
test eax, eax
jns 0x43d3dc
mov byte [ebp - 0x4b], 0
jmp 0x43d3e2
mov byte [ebp - 0x4b], al
mov dword [ebp - 0x3c], esi
mulsd xmm1, xmm2
cvttsd2si eax, xmm1
cmp eax, 0xff
jle 0x43d3f7
mov byte [ebp - 0x4c], 0xff
jmp 0x43d404
test eax, eax
jns 0x43d401
mov byte [ebp - 0x4c], 0
jmp 0x43d407
mov byte [ebp - 0x4c], al
mov dword [ebp - 0x3c], esi
mov esi, dword [ebp - 0x58]
mov edi, dword [ebp - 0x2c]
mov ecx, edi
push 0
push dword [ebp - 0x4c]
push dword [ebp - 0x14]
push esi
call fcn.00437220
cmp word [ebp - 0x48], 4
jne 0x43d43b
mov ecx, dword [ebp - 0x78]
mov eax, dword [ebp - 0x18]
movzx eax, byte [ecx + eax + 3]
mov ecx, edi
push eax
push dword [ebp - 0x14]
push esi
call fcn.004415b0
mov eax, dword [ebp - 0x1c]
inc esi
inc eax
mov dword [ebp - 0x58], esi
mov dword [ebp - 0x1c], eax
cmp esi, dword [ebp - 0x24]
jl 0x43d120
dec dword [ebp - 0x14]
xor eax, eax
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x1c]
jmp 0x43d120
mov edi, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x3c]
inc ecx
jmp 0x43ce1e
mov eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x74]
add eax, ecx
mov edx, dword [ebp - 0x18]
jmp 0x43cb95
push 1
push 0
mov ecx, edi
call fcn.00444a00
push dword [ebp - 0x44]
call fcn.0050ac40
add esp, 4
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push 1
push 0
mov ecx, edi
call fcn.00444510
push 1
push 0
mov ecx, edi
call fcn.00444a00
push dword [ebp - 0x44]
call fcn.0050ac40
add esp, 4
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push 1
push 0
mov ecx, edi
call fcn.00444510
push dword [ebp - 0x44]
call fcn.0050ac40
add esp, 4
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push 0
mov ecx, edi
call fcn.00445580
push 1
push 0
mov ecx, edi
call fcn.00444a00
push dword [ebp - 0x44]
call fcn.0050ac40
add esp, 4
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push 0
mov ecx, edi
call fcn.00444dd0
push dword [ebp - 0x44]
call fcn.0050ac40
add esp, 4
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push 0
mov ecx, edi
call fcn.00444dd0
push 1
push 0
mov ecx, edi
call fcn.00444a00
push dword [ebp - 0x44]
call fcn.0050ac40
add esp, 4
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push 0
mov ecx, edi
call fcn.00445580
push dword [ebp - 0x44]
call fcn.0050ac40
add esp, 4
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push 0x7856bc
lea eax, [ebp - 0xa4]
mov dword [ebp - 0xa4], str.Error_encountered_while_opening_TIFF_file
push eax
call fcn.00691015
push 0x7856bc
lea eax, [ebp - 0xa8]
mov dword [ebp - 0xa8], str.Error:_page_not_present_in_TIFF_file
push eax
call fcn.00691015
mov eax, dword [ebp - 0x24]
mov dword [edi + 0xc], eax
mov eax, dword [ebp - 0x28]
mov dword [edi + 0x10], eax
lea eax, [ebp - 0xac]
push 0x7856bc
push eax
mov dword [edi + 0x40], 6
mov dword [ebp - 0xac], str.output_dimensions_returned
call fcn.00691015
push 0x7856bc
lea eax, [ebp - 0xb0]
mov dword [ebp - 0xb0], str.Cancelled
push eax
call fcn.00691015
push 0x7856bc
lea eax, [ebp - 0xb4]
mov dword [ebp - 0xb4], str.CxImageTIF_cant_create_image
push eax
call fcn.00691015
push 0x7856bc
lea eax, [ebp - 0xb8]
mov dword [ebp - 0xb8], str.No_space_for_raster_buffer
push eax
call fcn.00691015
push esi
call fcn.004d1500
add esp, 4
mov dword [ebp - 0xd0], str.Corrupted_TIFF_file_
lea eax, [ebp - 0xd0]
push 0x7856bc
push eax
call fcn.00691015
push dword [ebp - 0x6c]
call fcn.004d1500
add esp, 4
mov dword [ebp - 0xbc], str.Cancelled
lea eax, [ebp - 0xbc]
push 0x7856bc
push eax
call fcn.00691015
push 0x7856bc
lea eax, [ebp - 0xc0]
mov dword [ebp - 0xc0], str.Too_big_palette_to_handle
push eax
call fcn.00691015
push 0x7856bc
lea eax, [ebp - 0xc4]
mov dword [ebp - 0xc4], str.Unable_to_allocate_TIFF_palette
push eax
call fcn.00691015
test eax, eax
je 0x43d79e
push eax
call fcn.0069ba2b
add esp, 4
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x43d7ae
push eax
call fcn.0069ba2b
add esp, 4
mov eax, dword [ebp - 0x5c]
test eax, eax
je 0x43d7be
push eax
call fcn.0069ba2b
add esp, 4
push 0x7856bc
lea eax, [ebp - 0xc8]
mov dword [ebp - 0xc8], str.CxImageTIF_cant_allocate_memory
push eax
call fcn.00691015
push edx
call fcn.0069ba2b
add esp, 4
mov dword [ebp - 0xcc], str.Cancelled
lea eax, [ebp - 0xcc]
push 0x7856bc
push eax
call fcn.00691015
invalid
push dword [ebp - 0x5c]
call fcn.0069ba2b
push dword [ebp - 0x18]
loop 0x43d829
add bh, bh
jne 0x43d7f0
call fcn.0069ba2b
add esp, 8
mov dword [ebp - 0xe0], str.Corrupted_tiled_TIFF_file_
lea eax, [ebp - 0xe0]
push 0x7856bc
push eax
call fcn.00691015
nop
jle 0x43d802
and eax, 0xd47e9000
inc ebx
add byte [edx - 0x1effbc2c], ch
aam 0x43
add byte [0x420043d5], cl
aad 0x43
add byte [ebp + edx*8 + 0x43], ch
add byte [ecx - 0x33ffbc2b], ah
int3