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

Disassembly:
sub esp, 0x60
push ebx
push ebp
push esi
mov esi, dword [esp + 0x70]
push edi
xor edi, edi
cmp esi, edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x2c], edi
je 0x1000cdfb
mov ebx, dword [esp + 0x78]
cmp ebx, edi
je 0x1000cdfb
push esi
call sym.GEAR32PO.OCX_GPb_iIG_image_is_valid
test eax, eax
jne 0x1000c564
push edi
push esi
push 0xfffff7f3
push 0x304
jmp 0x1000ce07
push ebx
call sym.GEAR32PO.OCX_GPb_iIG_image_is_valid
test eax, eax
jne 0x1000c57f
push edi
push ebx
push 0xfffff7f3
push 0x307
jmp 0x1000ce07
lea eax, [esp + 0x24]
lea ecx, [esp + 0x18]
push eax
lea edx, [esp + 0x18]
push ecx
push edx
push esi
call fcn.100839c0
lea eax, [esp + 0x20]
lea ecx, [esp + 0x48]
push eax
lea edx, [esp + 0x50]
push ecx
push edx
push ebx
call fcn.100839c0
lea eax, [esp + 0x38]
push eax
push esi
call fcn.10083240
lea ecx, [esp + 0x3c]
push ecx
push ebx
call fcn.10083240
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
cmp eax, 1
je 0x1000c5e5
cmp ecx, 1
je 0x1000c5e5
cmp eax, 0x18
je 0x1000c5e5
cmp ecx, 0x18
je 0x1000c5e5
cmp eax, 8
je 0x1000c5ea
cmp ecx, 8
jne 0x1000c5fb
cmp eax, 8
jne 0x1000c5f0
cmp dword [esp + 0x38], edi
je 0x1000c5fb
cmp ecx, 8
jne 0x1000c60c
cmp dword [esp + 0x3c], edi
jne 0x1000c60c
push edi
push edi
push 0xfffff31c
push 0x316
jmp 0x1000ce07
cmp eax, ecx
je 0x1000c621
push edi
push edi
push 0xfffff402
push 0x31c
jmp 0x1000ce07
mov ebp, dword [esp + 0x80]
cmp ebp, edi
jl 0x1000cded
cmp ebp, dword [esp + 0x14]
jge 0x1000cded
mov ebx, dword [esp + 0x84]
cmp ebx, edi
jl 0x1000cddf
cmp ebx, dword [esp + 0x18]
jge 0x1000cddf
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x78]
lea edx, [esp + 0x50]
push edx
push eax
push ecx
call sym.GEAR32PO.OCX_GPb_IP_check_rect_for_NULL_and_clip
mov edi, dword [esp + 0x54]
mov dword [esp + 0x60], ebp
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x64], ebx
lea eax, [edx + ebp]
sub eax, ecx
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x68], eax
lea esi, [ecx + ebx]
sub esi, edi
mov edi, dword [esp + 0x14]
dec edi
mov dword [esp + 0x6c], esi
cmp eax, edi
jle 0x1000c6b3
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x68], edi
sub ebp, eax
lea edx, [edx + ebp - 1]
mov ebp, dword [esp + 0x80]
mov dword [esp + 0x58], edx
mov eax, dword [esp + 0x18]
dec eax
cmp esi, eax
mov dword [esp + 0x80], eax
jle 0x1000c6dc
mov eax, dword [esp + 0x18]
sub eax, esi
lea ecx, [ecx + eax - 1]
mov eax, dword [esp + 0x80]
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x6c], eax
cmp ebp, edi
jg 0x1000cdcf
cmp ebx, eax
jg 0x1000cdcf
mov eax, dword [esp + 0x88]
test eax, eax
jbe 0x1000cdc0
cmp eax, 8
jbe 0x1000c709
cmp eax, 0xa
jne 0x1000cdc0
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x54]
sub edx, eax
sub ecx, ebx
inc edx
inc ecx
mov ebp, ecx
mov esi, edx
lea ecx, [esp + 0x44]
lea edx, [esp + 0x40]
push ecx
push edx
mov dword [esp + 0x88], esi
mov dword [esp + 0x38], ebp
call fcn.100d3780
cmp dword [esp + 0x20], 1
jne 0x1000c836
mov esi, dword [esp + 0x74]
push esi
call sym.GEAR32PO.OCX_GPb_DIB_pointer_get
push eax
call fcn.10032b90
xor ebx, ebx
cmp eax, 0x1f4
mov edi, dword [esp + 0x78]
sete bl
push edi
mov dword [esp + 0x78], ebx
call sym.GEAR32PO.OCX_GPb_DIB_pointer_get
push eax
call fcn.10032b90
xor ecx, ecx
cmp eax, 0x1f4
sete cl
mov ebp, ecx
test ebx, ebx
mov dword [esp + 0x78], ebp
je 0x1000c788
push esi
call sym.GEAR32PO.OCX_IG_IP_convert_runs_to_DIB
test ebp, ebp
je 0x1000c792
push edi
call sym.GEAR32PO.OCX_IG_IP_convert_runs_to_DIB
push esi
call sym.GEAR32PO.OCX_GPb_palette_pointer_get
cmp byte [eax], 0
je 0x1000c7ae
push 1
push 0
push esi
call fcn.10020140
mov ebp, 1
jmp 0x1000c7b2
mov ebp, dword [esp + 0x34]
push edi
call sym.GEAR32PO.OCX_GPb_palette_pointer_get
cmp byte [eax], 0
je 0x1000c7ce
push 1
push 0
push edi
call fcn.10020140
mov ebx, 1
jmp 0x1000c7d2
mov ebx, dword [esp + 0x2c]
mov edx, dword [esp + 0x88]
lea eax, [esp + 0x50]
push edx
lea ecx, [esp + 0x64]
push eax
push ecx
push edi
push esi
call fcn.1000ceb0
test ebx, ebx
je 0x1000c7f9
push 1
push 0
push edi
call fcn.10020140
test ebp, ebp
je 0x1000c807
push 1
push 0
push esi
call fcn.10020140
mov eax, dword [esp + 0x74]
test eax, eax
je 0x1000c815
push esi
call sym.GEAR32PO.OCX_IG_IP_convert_DIB_to_runs
mov eax, dword [esp + 0x78]
test eax, eax
je 0x1000ce11
push edi
call sym.GEAR32PO.OCX_IG_IP_convert_DIB_to_runs
call fcn.10046b40
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x60
ret 0x18
call fcn.100a0c60
lea esi, [esi + esi*2]
mov ebx, eax
push esi
push ebx
mov dword [esp + 0x3c], ebx
call fcn.100a0c80
push esi
push ebx
mov edi, eax
call fcn.100a0c80
test edi, edi
mov dword [esp + 0x7c], eax
je 0x1000cd92
test eax, eax
je 0x1000cd8e
mov eax, dword [esp + 0x24]
mov ecx, 1
cmp eax, ecx
mov dword [esp + 0x10], 0xff
mov dword [esp + 0x84], ecx
jne 0x1000c888
mov dword [esp + 0x10], ecx
cmp eax, 0x18
jne 0x1000c898
mov dword [esp + 0x84], 3
test ebp, ebp
mov dword [esp + 0x1c], 0
jle 0x1000cd31
mov edx, dword [esp + 0x88]
dec edx
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x64]
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x80]
mov edx, dword [esp + 0x60]
push 2
push edi
lea ecx, [esi + eax]
mov eax, dword [esp + 0x7c]
push ebx
push ecx
push edx
push eax
call fcn.10005b20
push 2
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
push ecx
mov ecx, dword [esp + 0x80]
add esi, edx
push ebx
push esi
push eax
push ecx
call fcn.10005b20
mov eax, dword [esp + 0x28]
cmp eax, 9
ja case.0x1000c90d.8
mov edx, eax
jmp dword [edx*4 + 0x1000ce80]
mov eax, dword [esp + 0x80]
xor edx, edx
test eax, eax
jle case.0x1000c90d.8
mov ebp, dword [esp + 0x84]
mov dword [esp + 0x88], eax
test ebp, ebp
jle 0x1000c94b
mov ecx, dword [esp + 0x7c]
lea eax, [edx + edi]
sub ecx, edi
mov esi, ebp
mov bl, byte [ecx + eax]
mov byte [eax], bl
inc eax
dec esi
jne 0x1000c942
mov eax, dword [esp + 0x88]
add edx, ebp
dec eax
mov dword [esp + 0x88], eax
jne 0x1000c933
jmp case.0x1000c90d.8
mov eax, dword [esp + 0x80]
xor ecx, ecx
test eax, eax
mov dword [esp + 0x88], ecx
jle case.0x1000c90d.8
mov edx, eax
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x84]
test edx, edx
jle 0x1000c9b1
mov esi, dword [esp + 0x7c]
add ecx, edi
sub esi, edi
mov ebp, edx
xor eax, eax
xor ebx, ebx
mov al, byte [ecx + esi]
mov bl, byte [ecx]
add eax, ebx
mov ebx, dword [esp + 0x10]
cmp eax, ebx
jle 0x1000c9ab
mov eax, ebx
mov byte [ecx], al
inc ecx
dec ebp
jne 0x1000c996
mov ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x2c]
add ecx, edx
dec eax
mov dword [esp + 0x88], ecx
mov dword [esp + 0x2c], eax
jne 0x1000c988
jmp case.0x1000c90d.8
mov eax, dword [esp + 0x80]
xor ecx, ecx
test eax, eax
mov dword [esp + 0x88], ecx
jle case.0x1000c90d.8
mov ebp, dword [esp + 0x84]
mov dword [esp + 0x2c], eax
test ebp, ebp
jle 0x1000ca27
mov edx, dword [esp + 0x7c]
add ecx, edi
sub edx, edi
mov esi, ebp
xor eax, eax
xor ebx, ebx
mov al, byte [ecx + edx]
mov bl, byte [ecx]
lea eax, [eax + ebx - 0x7f]
test eax, eax
jge 0x1000ca17
xor eax, eax
jmp 0x1000ca21
mov ebx, dword [esp + 0x10]
cmp eax, ebx
jle 0x1000ca21
mov eax, ebx
mov byte [ecx], al
inc ecx
dec esi
jne 0x1000ca02
mov ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x2c]
add ecx, ebp
dec eax
mov dword [esp + 0x88], ecx
mov dword [esp + 0x2c], eax
jne 0x1000c9f4
jmp case.0x1000c90d.8
mov eax, dword [esp + 0x80]
xor ecx, ecx
test eax, eax
mov dword [esp + 0x88], ecx
jle case.0x1000c90d.8
mov ebp, dword [esp + 0x84]
mov edx, eax
mov dword [esp + 0x2c], edx
test ebp, ebp
jle 0x1000ca96
mov esi, dword [esp + 0x7c]
add ecx, edi
sub esi, edi
mov ebx, ebp
xor eax, eax
xor edx, edx
mov al, byte [ecx + esi]
mov dl, byte [ecx]
sub edx, eax
mov eax, 0
sets al
dec eax
and eax, edx
mov byte [ecx], al
inc ecx
dec ebx
jne 0x1000ca7a
mov ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x2c]
add ecx, ebp
dec eax
mov dword [esp + 0x88], ecx
mov dword [esp + 0x2c], eax
jne 0x1000ca6c
jmp case.0x1000c90d.8
mov eax, dword [esp + 0x80]
xor ecx, ecx
test eax, eax
mov dword [esp + 0x88], ecx
jle case.0x1000c90d.8
mov edx, eax
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x84]
test edx, edx
jle 0x1000cb0d
mov esi, dword [esp + 0x7c]
add ecx, edi
sub esi, edi
mov ebp, edx
xor eax, eax
xor ebx, ebx
mov al, byte [ecx + esi]
mov bl, byte [ecx]
imul eax, ebx
test eax, eax
jge 0x1000cafd
xor eax, eax
jmp 0x1000cb07
mov ebx, dword [esp + 0x10]
cmp eax, ebx
jle 0x1000cb07
mov eax, ebx
mov byte [ecx], al
inc ecx
dec ebp
jne 0x1000cae9
mov ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x2c]
add ecx, edx
dec eax
mov dword [esp + 0x88], ecx
mov dword [esp + 0x2c], eax
jne 0x1000cadb
jmp case.0x1000c90d.8
mov eax, dword [esp + 0x80]
xor esi, esi
test eax, eax
mov dword [esp + 0x88], esi
jle case.0x1000c90d.8
mov ebp, dword [esp + 0x84]
mov dword [esp + 0x2c], eax
test ebp, ebp
jle 0x1000cb9c
mov ebx, dword [esp + 0x7c]
add esi, edi
sub ebx, edi
mov cl, byte [esi + ebx]
test cl, cl
jne 0x1000cb70
mov al, byte [esi]
neg al
sbb eax, eax
and eax, 0xff
jmp 0x1000cb8f
xor eax, eax
and ecx, 0xff
mov al, byte [esi]
cdq
idiv ecx
test eax, eax
jge 0x1000cb85
xor eax, eax
jmp 0x1000cb8f
mov ecx, dword [esp + 0x10]
cmp eax, ecx
jle 0x1000cb8f
mov eax, ecx
mov byte [esi], al
inc esi
dec ebp
jne 0x1000cb5c
mov ebp, dword [esp + 0x84]
mov esi, dword [esp + 0x88]
mov eax, dword [esp + 0x2c]
add esi, ebp
dec eax
mov dword [esp + 0x88], esi
mov dword [esp + 0x2c], eax
jne 0x1000cb50
jmp case.0x1000c90d.8
mov ecx, dword [esp + 0x80]
xor eax, eax
test ecx, ecx
mov dword [esp + 0x88], eax
jle case.0x1000c90d.8
mov edx, dword [esp + 0x84]
mov dword [esp + 0x2c], ecx
test edx, edx
jle 0x1000cbfe
mov esi, dword [esp + 0x7c]
add eax, edi
sub esi, edi
mov ebp, edx
xor ecx, ecx
xor ebx, ebx
mov cl, byte [eax + esi]
mov bl, byte [eax]
and ecx, ebx
mov byte [eax], cl
inc eax
dec ebp
jne 0x1000cbed
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x2c]
add eax, edx
dec ecx
mov dword [esp + 0x88], eax
mov dword [esp + 0x2c], ecx
jne 0x1000cbdf
jmp case.0x1000c90d.8
mov eax, dword [esp + 0x80]
xor edx, edx
test eax, eax
jle case.0x1000c90d.8
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x84]
test eax, eax
jle 0x1000cc62
mov esi, dword [esp + 0x7c]
mov ebp, dword [esp + 0x84]
lea eax, [edx + edi]
sub esi, edi
xor ecx, ecx
xor ebx, ebx
mov cl, byte [eax + esi]
mov bl, byte [eax]
or ecx, ebx
mov byte [eax], cl
inc eax
dec ebp
jne 0x1000cc51
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x88]
add edx, eax
dec ecx
mov dword [esp + 0x88], ecx
jne 0x1000cc3d
jmp case.0x1000c90d.8
mov eax, dword [esp + 0x80]
xor edx, edx
test eax, eax
jle case.0x1000c90d.8
mov ecx, eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x88], ecx
test eax, eax
jle 0x1000ccc0
mov esi, dword [esp + 0x7c]
mov ebp, dword [esp + 0x84]
lea eax, [edx + edi]
sub esi, edi
xor ecx, ecx
xor ebx, ebx
mov cl, byte [eax + esi]
mov bl, byte [eax]
xor ecx, ebx
mov byte [eax], cl
inc eax
dec ebp
jne 0x1000ccaf
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x88]
add edx, eax
dec ecx
mov dword [esp + 0x88], ecx
jne 0x1000cc9b
mov eax, dword [esp + 0x64]
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x80]
push 2
push edi
push edx
mov edx, dword [esp + 0x6c]
lea ecx, [esi + eax]
mov eax, dword [esp + 0x80]
push ecx
push edx
push eax
call fcn.10005df0
mov eax, dword [esp + 0x40]
mov ebx, dword [esp + 0x30]
test eax, eax
je 0x1000cd20
mov ecx, dword [esp + 0x44]
push ebx
push esi
push ecx
call eax
test eax, eax
je 0x1000ce20
inc esi
cmp esi, ebx
mov dword [esp + 0x1c], esi
jl 0x1000c8b4
mov ebx, dword [esp + 0x34]
push edi
push ebx
call fcn.100a1010
test eax, eax
je 0x1000cd53
push 0
push eax
push 0xfffff42a
push 0x44f
push str.C:_accusoftgear_sourceIMG_PROCARITH.C
call fcn.10046940
mov eax, dword [esp + 0x7c]
push eax
push ebx
call fcn.100a1010
test eax, eax
je 0x1000cd79
push 0
push eax
push 0xfffff42a
push 0x456
push str.C:_accusoftgear_sourceIMG_PROCARITH.C
call fcn.10046940
push ebx
call fcn.100a12c0
call fcn.10046b40
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x60
ret 0x18
test edi, edi
jne 0x1000cda9
push 0
push esi
push 0xfffffc18
push 0x3a6
push str.C:_accusoftgear_sourceIMG_PROCARITH.C
call fcn.10046940
mov eax, dword [esp + 0x7c]
test eax, eax
jne 0x1000ce11
push 0
push esi
push 0xfffffc18
push 0x3a9
jmp 0x1000ce07
push 0
push eax
push 0xfffff308
push 0x364
jmp 0x1000ce07
push 0
push 0
push 0xfffff3da
push 0x351
jmp 0x1000ce07
push edi
push ebx
push 0xfffff308
push 0x32a
jmp 0x1000ce07
push edi
push ebp
push 0xfffff308
push 0x323
jmp 0x1000ce07
push edi
push edi
push 0xfffff40c
push 0x301
push str.C:_accusoftgear_sourceIMG_PROCARITH.C
call fcn.10046940
call fcn.10046b40
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x60
ret 0x18
push edi
mov edi, dword [esp + 0x38]
push edi
call fcn.100a1010
test eax, eax
je 0x1000ce46
push 0
push eax
push 0xfffff42a
push 0x43a
push str.C:_accusoftgear_sourceIMG_PROCARITH.C
call fcn.10046940
mov edx, dword [esp + 0x7c]
push edx
push edi
call fcn.100a1010
test eax, eax
je 0x1000ce6c
push 0
push eax
push 0xfffff42a
push 0x440
push str.C:_accusoftgear_sourceIMG_PROCARITH.C
call fcn.10046940
push edi
call fcn.100a12c0
push ebx
push esi
push 0xfffff7bf
push 0x445
jmp 0x1000ce07