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

Disassembly:
sub esp, 0xb4
push ebx
push ebp
push esi
mov esi, dword [esp + 0xc4]
mov ebx, ecx
push edi
test esi, esi
mov dword [esp + 0x50], ebx
je 0x42d107
mov esi, 1
mov dword [esp + 0xc8], esi
mov edi, dword [ebx + 0x47]
mov dword [esp + 0xac], edi
mov ax, word [edi + 0x2e]
cmp ax, word [edi + 0x2c]
jb 0x42d12a
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xb4
ret 4
mov eax, dword [edi + 0x3b]
mov dword [esp + 0x74], 1
test eax, eax
je 0x42d171
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [edi + 0x3b]
xor edx, edx
sub eax, ecx
mov ebp, dword [ebx + 0x43]
div dword [edi + 0x24]
xor ecx, ecx
mov cx, word [edi + 0x2e]
add eax, ebp
sub eax, ecx
test esi, esi
mov dword [esp + 0x74], eax
je 0x42d171
test eax, eax
jge 0x42d171
pop edi
pop esi
pop ebp
mov eax, ecx
pop ebx
add esp, 0xb4
ret 4
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x18]
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x5c], edx
mov edx, dword [edi + 0x50]
mov dword [esp + 0x38], eax
xor eax, eax
mov dword [esp + 0x9c], edx
mov dl, byte [edi + 0x34]
mov ax, word [edi + 0x1c]
mov byte [esp + 0x88], dl
mov edx, dword [edi + 0x36]
mov dword [esp + 0x2c], eax
mov dword [esp + 0xa4], ecx
lea eax, [eax*8 + 0x1f]
xor ecx, ecx
mov cx, word [edi + 0x1e]
mov dword [esp + 0xb0], edx
cdq
mov dword [esp + 0x3c], ecx
mov ecx, dword [edi + 0x4c]
and edx, 0x1f
mov ebp, dword [edi + 0x44]
add eax, edx
mov dword [esp + 0x34], ecx
mov ecx, dword [edi + 0x48]
mov dword [esp + 0x20], ebp
sar eax, 5
mov dword [esp + 0x94], ecx
mov cl, byte [edi + 0x35]
shl eax, 2
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x74]
mov byte [esp + 0xa8], cl
mov ecx, dword [edi + 0x10]
test eax, eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x90], 0
jle 0x42e330
jmp 0x42d218
mov ebp, dword [esp + 0x20]
mov al, byte [edi + 0x3a]
test al, al
jne 0x42d11b
push ebp
push 1
lea edx, [esp + 0xbc]
push 0x10
push edx
call fcn.00496d40
mov eax, dword [esp + 0xc4]
add esp, 0x10
add eax, 0xfffffff0
mov ebx, eax
mov esi, eax
shr ebx, 0xe
and esi, 0x3fff
cmp eax, 0x4000
mov dword [esp + 0x14], esi
push ebp
ja 0x42d27d
mov ecx, dword [esp + 0x2c]
and esi, 0xffff
push esi
push 1
push ecx
call fcn.00496d40
add esp, 0x10
xor esi, esi
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], esi
jmp 0x42d296
mov edx, dword [esp + 0x2c]
push 0x4000
push 1
push edx
call fcn.00496d40
add esp, 0x10
dec ebx
mov dword [esp + 0x18], ebx
mov ax, word [esp + 0xba]
mov ebp, dword [esp + 0x28]
xor ebx, ebx
mov cx, ax
dec ax
test cx, cx
mov word [esp + 0xba], ax
je 0x42e303
mov edi, dword [esp + 0x28]
mov dword [esp + 0x24], ebp
test si, si
jne 0x42d2d3
mov eax, dword [esp + 0x18]
test eax, eax
je 0x42d3a9
mov eax, ebx
and eax, 0xffff
lea edx, [eax + 6]
cmp edx, 0x4000
jb 0x42d3a9
mov ecx, 0x4000
sub ecx, eax
mov dword [esp + 0x10], ecx
je 0x42d307
mov eax, ecx
push eax
push ebp
push edi
call fcn.00497220
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov eax, dword [esp + 0x18]
xor ebx, ebx
test eax, eax
mov dword [esp + 0x24], edi
je 0x42d34f
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x20]
mov edx, 0x4000
push ecx
sub edx, ebp
lea eax, [edi + ebp]
push edx
push 1
push eax
call fcn.00496d40
add esi, ebp
add esp, 0x10
cmp si, 0x4000
mov dword [esp + 0x14], esi
jbe 0x42d349
and esi, 0x3fff
jmp 0x42d3a5
dec dword [esp + 0x18]
jmp 0x42d3a9
mov eax, esi
and eax, 0xffff
add ecx, eax
cmp ecx, 0x4000
jbe 0x42d38c
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
mov ecx, 0x4000
add esi, eax
sub ecx, eax
push edx
push ecx
add eax, edi
and esi, 0x3fff
push 1
push eax
mov dword [esp + 0x24], esi
call fcn.00496d40
add esp, 0x10
jmp 0x42d3a9
mov edx, dword [esp + 0x20]
push edx
push eax
mov eax, dword [esp + 0x18]
push 1
add eax, edi
push eax
call fcn.00496d40
add esp, 0x10
xor esi, esi
mov dword [esp + 0x14], esi
mov ecx, dword [esp + 0x24]
add ebx, 6
mov ax, word [ecx + 4]
lea ebp, [ecx + 6]
cmp ax, 0xd
jne 0x42d411
mov ecx, dword [esp + 0x60]
mov edi, dword [esp + 0x34]
and ecx, 0xffff
xor eax, eax
imul ecx, dword [esp + 0x3c]
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0xc8]
test eax, eax
je 0x42e2de
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x60]
push ecx
mov ecx, dword [esp + 0x58]
push edx
push eax
call fcn.0042e8e0
jmp 0x42e2de
cmp ax, 4
je 0x42e45b
cmp ax, 0xb
je 0x42e45b
cmp ax, 0xc
jne 0x42d8b1
test si, si
jne 0x42d440
mov eax, dword [esp + 0x18]
test eax, eax
je 0x42d518
mov eax, ebx
and eax, 0xffff
lea ecx, [eax + 4]
cmp ecx, 0x4000
jb 0x42d518
mov ecx, 0x4000
sub ecx, eax
mov dword [esp + 0x10], ecx
je 0x42d474
mov edx, ecx
push edx
push ebp
push edi
call fcn.00497220
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov eax, dword [esp + 0x18]
xor ebx, ebx
test eax, eax
mov ebp, edi
je 0x42d4bd
mov eax, dword [esp + 0x20]
mov ecx, 0x4000
push eax
mov eax, dword [esp + 0x14]
sub ecx, eax
add eax, edi
push ecx
push 1
push eax
call fcn.00496d40
mov ecx, dword [esp + 0x20]
add esp, 0x10
add esi, ecx
cmp si, 0x4000
mov dword [esp + 0x14], esi
jbe 0x42d4b7
and esi, 0x3fff
jmp 0x42d514
dec dword [esp + 0x18]
jmp 0x42d518
mov eax, esi
and eax, 0xffff
lea edx, [eax + ecx]
cmp edx, 0x4000
jbe 0x42d4fb
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x20]
mov edx, 0x4000
add esi, eax
sub edx, eax
push ecx
push edx
add eax, edi
and esi, 0x3fff
push 1
push eax
mov dword [esp + 0x24], esi
call fcn.00496d40
add esp, 0x10
jmp 0x42d518
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
push ecx
push eax
add edx, edi
push 1
push edx
call fcn.00496d40
add esp, 0x10
xor esi, esi
mov dword [esp + 0x14], esi
mov ax, word [ebp]
mov cx, word [ebp + 2]
add ax, word [esp + 0x38]
add ebp, 2
add ebp, 2
add ebx, 4
add cx, ax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x6c], ecx
and eax, 0xffff
and ecx, 0xffff
mov dword [esp + 0x40], 0x7fff
cmp eax, ecx
mov dword [esp + 0x1c], 0
jge 0x42d84c
mov edx, dword [esp + 0x60]
mov edi, dword [esp + 0x38]
neg edx
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0x3c]
sub edx, eax
lea edx, [edx + edi - 1]
imul edx, dword [esp + 0x60]
sub ecx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x54], ecx
test si, si
jne 0x42d594
mov eax, dword [esp + 0x18]
test eax, eax
je 0x42d667
mov ecx, dword [esp + 0x2c]
mov eax, ebx
and eax, 0xffff
lea edx, [eax + ecx*2]
cmp edx, 0x4000
jb 0x42d667
mov edi, 0x4000
sub edi, eax
je 0x42d5c6
mov eax, dword [esp + 0x28]
push edi
push ebp
push eax
call fcn.00497220
add esp, 0xc
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x28]
xor ebx, ebx
test eax, eax
je 0x42d60c
mov ecx, dword [esp + 0x20]
mov edx, 0x4000
mov eax, ebp
sub edx, edi
push ecx
push edx
lea ecx, [edi + eax]
push 1
push ecx
call fcn.00496d40
add esi, edi
add esp, 0x10
cmp si, 0x4000
mov dword [esp + 0x14], esi
jbe 0x42d606
and esi, 0x3fff
jmp 0x42d663
dec dword [esp + 0x18]
jmp 0x42d667
mov eax, esi
and eax, 0xffff
lea edx, [eax + edi]
cmp edx, 0x4000
jbe 0x42d64a
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
mov ecx, 0x4000
add esi, edi
sub ecx, edi
push eax
push ecx
add edi, edx
and esi, 0x3fff
push 1
push edi
mov dword [esp + 0x24], esi
call fcn.00496d40
add esp, 0x10
jmp 0x42d667
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
push ecx
push eax
add edi, edx
push 1
push edi
call fcn.00496d40
add esp, 0x10
xor esi, esi
mov dword [esp + 0x14], esi
xor eax, eax
xor ecx, ecx
mov al, byte [ebp]
inc ebp
inc ebx
mov edx, eax
dec eax
test edx, edx
je 0x42d81d
inc eax
mov dword [esp + 0x58], eax
movzx ax, byte [ebp]
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x10]
add ecx, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x24], ecx
inc ebp
and ecx, 0xffff
inc ebx
cmp eax, ecx
mov dword [esp + 0x48], ecx
jle 0x42d6ab
mov dword [esp + 0x40], ecx
mov al, byte [ebp]
test al, 0x80
je 0x42d76f
not al
inc al
lea edi, [ecx + esi]
mov byte [esp + 0x84], al
add edi, edx
mov ecx, dword [esp + 0x84]
mov edx, edi
and ecx, 0xff
and edx, 0xffff
inc ebp
inc ebx
lea eax, [edx + ecx - 0x10000]
test eax, eax
mov dword [esp + 0x30], eax
jle 0x42d73c
movsx eax, ax
sub ecx, eax
xor eax, eax
mov al, byte [ebp]
mov dword [esp + 0x68], ecx
mov dl, al
mov esi, ecx
mov dh, dl
mov eax, edx
shl eax, 0x10
mov ax, dx
mov edx, dword [esp + 0x48]
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, esi
mov esi, dword [esp + 0x10]
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [esp + 0x30]
lea edi, [edx + esi]
mov edx, dword [esp + 0x68]
mov esi, dword [esp + 0x34]
xor eax, eax
add edi, edx
mov al, byte [ebp]
and ecx, 0xffff
add edi, esi
jmp 0x42d741
xor eax, eax
mov al, byte [ebp]
mov dl, al
mov esi, ecx
mov dh, dl
mov eax, edx
shl eax, 0x10
mov ax, dx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, esi
and ecx, 3
inc ebp
rep stosb byte es:[edi], al
movzx ax, byte [esp + 0x84]
mov ecx, dword [esp + 0x24]
inc ebx
jmp 0x42d808
lea edi, [ecx + esi]
mov byte [esp + 0x7c], al
mov eax, dword [esp + 0x7c]
add edi, edx
mov ecx, edi
and eax, 0xff
and ecx, 0xffff
inc ebp
inc ebx
mov dword [esp + 0x68], eax
lea ecx, [ecx + eax - 0x10000]
test ecx, ecx
mov dword [esp + 0x30], ecx
jle 0x42d7e8
movsx edx, cx
sub eax, edx
mov esi, ebp
mov ecx, eax
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [esp + 0x10]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x48]
mov ecx, dword [esp + 0x30]
add edi, edx
lea esi, [eax + ebp]
add edi, eax
mov eax, dword [esp + 0x34]
and ecx, 0xffff
add edi, eax
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x68]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x42d7fa
mov ecx, eax
mov esi, ebp
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x24]
add ebp, eax
movzx ax, byte [esp + 0x7c]
add ebx, eax
add ecx, eax
mov eax, dword [esp + 0x58]
dec eax
mov dword [esp + 0x58], eax
jne 0x42d680
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
and ecx, 0xffff
cmp eax, ecx
jge 0x42d82f
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x10]
add ecx, eax
mov eax, dword [esp + 0x54]
dec eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x54], eax
jne 0x42d583
mov eax, dword [esp + 0xc8]
cmp eax, 2
jne 0x42d886
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x40]
sub eax, edx
inc eax
push eax
mov eax, dword [esp + 0x20]
sub eax, ecx
inc eax
push eax
push edx
mov edx, dword [esp + 0x68]
add ecx, edx
push ecx
mov ecx, dword [esp + 0x60]
call fcn.0042e8e0
jmp 0x42e2de
cmp eax, 1
jne 0x42e2de
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x60]
push ecx
mov ecx, dword [esp + 0x58]
push edx
push eax
call fcn.0042e8e0
jmp 0x42e2de
cmp ax, 0xf
jne 0x42dbd5
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
lea eax, [ecx + edx]
and eax, 0xffff
cmp ecx, eax
jge 0x42dba4
mov edx, dword [esp + 0x60]
mov ecx, edx
neg ecx
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x38]
sub eax, ecx
mov dword [esp + 0x58], eax
lea ecx, [eax - 1]
imul ecx, edx
mov dword [esp + 0x10], ecx
test si, si
jne 0x42d904
mov eax, dword [esp + 0x18]
test eax, eax
je 0x42d9dd
mov ecx, dword [esp + 0x2c]
mov eax, ebx
and eax, 0xffff
lea edx, [eax + ecx*2]
cmp edx, 0x4000
jb 0x42d9dd
mov edi, 0x4000
sub edi, eax
je 0x42d936
mov eax, dword [esp + 0x28]
push edi
push ebp
push eax
call fcn.00497220
add esp, 0xc
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x28]
xor ebx, ebx
test eax, eax
je 0x42d980
mov ecx, dword [esp + 0x20]
mov edx, 0x4000
mov eax, ebp
sub edx, edi
push ecx
push edx
lea ecx, [edi + eax]
push 1
push ecx
call fcn.00496d40
add esi, edi
add esp, 0x10
cmp si, 0x4000
mov dword [esp + 0x14], esi
jbe 0x42d97a
and esi, 0x3fff
mov dword [esp + 0x14], esi
jmp 0x42d9dd
dec dword [esp + 0x18]
jmp 0x42d9dd
mov eax, esi
and eax, 0xffff
lea edx, [eax + edi]
cmp edx, 0x4000
jbe 0x42d9be
mov ecx, dword [esp + 0x20]
lea eax, [edi + esi]
and eax, 0x3fff
mov edx, 0x4000
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x28]
sub edx, edi
push ecx
push edx
add edi, eax
push 1
push edi
call fcn.00496d40
add esp, 0x10
jmp 0x42d9dd
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
push ecx
push eax
add edi, edx
push 1
push edi
call fcn.00496d40
add esp, 0x10
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x2c]
inc ebp
inc ebx
xor ecx, ecx
test eax, eax
mov dword [esp + 0x1c], ecx
jle 0x42db83
mov al, byte [ebp]
test al, 0x80
je 0x42daa7
not al
mov edx, dword [esp + 0x34]
inc al
mov byte [esp + 0x8c], al
mov eax, dword [esp + 0x10]
and ecx, 0xffff
inc ebp
mov dword [esp + 0x40], ecx
inc ebx
lea edi, [ecx + eax]
mov eax, dword [esp + 0x8c]
add edi, edx
and eax, 0xff
mov ecx, edi
and ecx, 0xffff
lea ecx, [ecx + eax - 0x10000]
test ecx, ecx
mov dword [esp + 0x4c], ecx
jle 0x42da83
movsx edx, cx
mov ecx, eax
mov esi, ebp
sub ecx, edx
mov dword [esp + 0x54], ecx
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x40]
mov ecx, dword [esp + 0x4c]
lea esi, [edx + ebp]
mov edx, dword [esp + 0x10]
add edi, edx
mov edx, dword [esp + 0x54]
add edi, edx
mov edx, dword [esp + 0x34]
and ecx, 0xffff
add edi, edx
jmp 0x42da87
mov ecx, eax
mov esi, ebp
mov edx, ecx
add ebp, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
movzx ax, byte [esp + 0x8c]
mov ecx, edx
and ecx, 3
add ebx, eax
rep movsb byte es:[edi], byte [esi]
jmp 0x42db65
mov byte [esp + 0x80], al
mov eax, dword [esp + 0x10]
and ecx, 0xffff
inc ebp
mov dword [esp + 0x40], ecx
inc ebx
lea edi, [ecx + eax]
mov ecx, dword [esp + 0x34]
add edi, ecx
mov ecx, dword [esp + 0x80]
mov edx, edi
and ecx, 0xff
and edx, 0xffff
lea eax, [edx + ecx - 0x10000]
test eax, eax
mov dword [esp + 0x4c], eax
jle 0x42db3b
movsx eax, ax
sub ecx, eax
xor eax, eax
mov al, byte [ebp]
mov dword [esp + 0x6c], ecx
mov dl, al
mov esi, ecx
mov dh, dl
mov eax, edx
shl eax, 0x10
mov ax, dx
mov edx, dword [esp + 0x40]
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, esi
mov esi, dword [esp + 0x10]
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [esp + 0x4c]
lea edi, [edx + esi]
mov edx, dword [esp + 0x6c]
mov esi, dword [esp + 0x34]
xor eax, eax
add edi, edx
mov al, byte [ebp]
and ecx, 0xffff
add edi, esi
jmp 0x42db40
xor eax, eax
mov al, byte [ebp]
mov dl, al
mov esi, ecx
mov dh, dl
mov eax, edx
shl eax, 0x10
mov ax, dx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, esi
and ecx, 3
inc ebp
rep stosb byte es:[edi], al
movzx ax, byte [esp + 0x80]
inc ebx
mov ecx, dword [esp + 0x1c]
add ecx, eax
mov eax, dword [esp + 0x2c]
mov edx, ecx
mov dword [esp + 0x1c], ecx
and edx, 0xffff
cmp edx, eax
jl 0x42d9f1
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
add ecx, eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x10], ecx
dec eax
mov dword [esp + 0x58], eax
jne 0x42d8f3
mov eax, dword [esp + 0xc8]
test eax, eax
je 0x42e2de
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x60]
push edx
push eax
push ecx
mov ecx, dword [esp + 0x60]
call fcn.0042e8e0
jmp 0x42e2de
cmp ax, 7
jne 0x42e0e1
test si, si
jne 0x42dbf0
mov eax, dword [esp + 0x18]
test eax, eax
je 0x42dcc7
mov eax, ebx
and eax, 0xffff
lea edx, [eax + 2]
cmp edx, 0x4000
jb 0x42dcc7
mov ecx, 0x4000
sub ecx, eax
mov dword [esp + 0x10], ecx
je 0x42dc24
mov eax, ecx
push eax
push ebp
push edi
call fcn.00497220
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov eax, dword [esp + 0x18]
xor ebx, ebx
test eax, eax
mov ebp, edi
je 0x42dc6d
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x20]
mov edx, 0x4000
push ecx
sub edx, eax
add eax, edi
push edx
push 1
push eax
call fcn.00496d40
mov ecx, dword [esp + 0x20]
add esp, 0x10
add esi, ecx
cmp si, 0x4000
mov dword [esp + 0x14], esi
jbe 0x42dc67
and esi, 0x3fff
jmp 0x42dcc3
dec dword [esp + 0x18]
jmp 0x42dcc7
mov eax, esi
and eax, 0xffff
add ecx, eax
cmp ecx, 0x4000
jbe 0x42dcaa
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
mov ecx, 0x4000
add esi, eax
sub ecx, eax
push edx
push ecx
add eax, edi
and esi, 0x3fff
push 1
push eax
mov dword [esp + 0x24], esi
call fcn.00496d40
add esp, 0x10
jmp 0x42dcc7
mov edx, dword [esp + 0x20]
push edx
push eax
mov eax, dword [esp + 0x18]
push 1
add eax, edi
push eax
call fcn.00496d40
add esp, 0x10
xor esi, esi
mov dword [esp + 0x14], esi
mov edx, dword [esp + 0x38]
mov cx, word [ebp]
or eax, 0xffffffff
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], eax
mov dword [esp + 0x48], eax
add ebp, 2
add ebx, 2
mov edx, 0x7fff
xor eax, eax
and ecx, 0xffff
mov dword [esp + 0x40], edx
mov dword [esp + 0x24], eax
jle 0x42e084
mov dword [esp + 0x68], ecx
jmp 0x42dd09
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
test si, si
jne 0x42dd1e
mov eax, dword [esp + 0x18]
test eax, eax
je 0x42ddfb
mov ecx, dword [esp + 0x2c]
mov eax, ebx
and eax, 0xffff
lea edx, [eax + ecx*2]
cmp edx, 0x4000
jb 0x42ddfb
mov edi, 0x4000
sub edi, eax
je 0x42dd50
mov eax, dword [esp + 0x28]
push edi
push ebp
push eax
call fcn.00497220
add esp, 0xc
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x28]
xor ebx, ebx
test eax, eax
je 0x42dd9a
mov ecx, dword [esp + 0x20]
mov edx, 0x4000
mov eax, ebp
sub edx, edi
push ecx
push edx
lea ecx, [edi + eax]
push 1
push ecx
call fcn.00496d40
add esi, edi
add esp, 0x10
cmp si, 0x4000
mov dword [esp + 0x14], esi
jbe 0x42dd94
and esi, 0x3fff
mov dword [esp + 0x14], esi
jmp 0x42ddf7
dec dword [esp + 0x18]
jmp 0x42ddf7
mov eax, esi
and eax, 0xffff
lea edx, [eax + edi]
cmp edx, 0x4000
jbe 0x42ddd8
mov ecx, dword [esp + 0x20]
lea eax, [edi + esi]
and eax, 0x3fff
mov edx, 0x4000
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x28]
sub edx, edi
push ecx
push edx
add edi, eax
push 1
push edi
call fcn.00496d40
add esp, 0x10
jmp 0x42ddf7
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
push ecx
push eax
add edi, edx
push 1
push edi
call fcn.00496d40
add esp, 0x10
mov dword [esp + 0x14], 0
mov edi, dword [esp + 0x10]
lea esi, [ebp + 1]
mov byte [esp + 0x47], 0
mov eax, esi
mov cl, byte [esi]
mov dl, cl
and dl, 0xc0
cmp dl, 0xc0
jne 0x42de29
mov cx, word [ebp]
add eax, 2
not cx
add ebp, 2
add ebx, 2
lea edi, [edi + ecx + 1]
mov esi, eax
jmp 0x42de05
and cl, 0x80
cmp cl, 0x80
jne 0x42de4a
mov dl, byte [ebp]
add eax, 2
add ebp, 2
mov byte [esp + 0x67], dl
add ebx, 2
mov byte [esp + 0x47], 1
mov esi, eax
jmp 0x42de05
mov eax, dword [esp + 0x48]
mov dword [esp + 0x10], edi
cmp eax, 0xffffffff
jne 0x42de62
mov eax, edi
and eax, 0xffff
mov dword [esp + 0x48], eax
mov edx, dword [esp + 0x3c]
mov ecx, edi
and ecx, 0xffff
xor eax, eax
mov dword [esp + 0x30], ecx
sub edx, ecx
mov ecx, dword [esp + 0x38]
mov ax, word [ebp]
add ebp, 2
add ebx, 2
lea edi, [edx + ecx - 1]
xor ecx, ecx
imul edi, dword [esp + 0x60]
mov edx, eax
dec eax
test edx, edx
mov dword [esp + 0x1c], edi
je 0x42e034
inc eax
mov dword [esp + 0x78], eax
movzx ax, byte [ebp]
add ecx, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x58], ecx
inc ebp
and ecx, 0xffff
inc ebx
cmp eax, ecx
mov dword [esp + 0x54], ecx
jle 0x42dec6
mov dword [esp + 0x40], ecx
mov al, byte [ebp]
test al, 0x80
je 0x42df93
not al
inc al
inc ebp
inc ebx
mov byte [esp + 0xa0], al
mov esi, dword [esp + 0xa0]
mov dword [esp + 0x70], ebx
mov ebx, dword [esp + 0x34]
add edi, ecx
add edi, ebx
and esi, 0xff
mov ecx, edi
shl esi, 1
and ecx, 0xffff
lea eax, [ecx + esi - 0x10000]
test eax, eax
mov dword [esp + 0x4c], eax
jle 0x42df5d
movsx edx, ax
xor eax, eax
mov ecx, esi
mov al, byte [ebp]
sub ecx, edx
mov bl, al
mov dword [esp + 0x6c], ecx
mov bh, bl
mov edx, ecx
mov eax, ebx
shl eax, 0x10
mov ax, bx
mov ebx, dword [esp + 0x54]
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x4c]
add edi, edx
mov edx, dword [esp + 0x34]
xor eax, eax
add edi, ebx
mov al, byte [ebp]
and ecx, 0xffff
add edi, edx
jmp 0x42df64
xor eax, eax
mov ecx, esi
mov al, byte [ebp]
mov bl, al
mov edx, ecx
mov bh, bl
add ebp, 2
mov eax, ebx
shl eax, 0x10
mov ax, bx
mov ebx, dword [esp + 0x70]
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
add ebx, 2
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [esp + 0x58]
add ecx, esi
jmp 0x42e021
add edi, ecx
mov ecx, dword [esp + 0x34]
mov byte [esp + 0x98], al
add edi, ecx
mov eax, dword [esp + 0x98]
mov ecx, edi
and eax, 0xff
and ecx, 0xffff
shl eax, 1
inc ebp
inc ebx
lea ecx, [ecx + eax - 0x10000]
test ecx, ecx
mov dword [esp + 0x70], ecx
jle 0x42e005
movsx edx, cx
mov ecx, eax
mov esi, ebp
sub ecx, edx
mov dword [esp + 0x4c], ecx
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x70]
lea esi, [edx + ebp]
add edi, edx
mov edx, dword [esp + 0x54]
and ecx, 0xffff
add edi, edx
mov edx, dword [esp + 0x34]
add edi, edx
jmp 0x42e009
mov ecx, eax
mov esi, ebp
mov edx, ecx
add ebp, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
add ebx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x58]
add ecx, eax
mov eax, dword [esp + 0x78]
mov edi, dword [esp + 0x1c]
dec eax
mov dword [esp + 0x78], eax
jne 0x42dea3
mov al, byte [esp + 0x47]
test al, al
je 0x42e04e
mov eax, dword [esp + 0x34]
mov dl, byte [esp + 0x67]
add edi, eax
mov eax, dword [esp + 0x2c]
mov byte [edi + eax - 1], dl
mov eax, dword [esp + 0x24]
and ecx, 0xffff
cmp eax, ecx
jge 0x42e060
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x68]
inc ecx
dec eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x68], eax
jne 0x42dd05
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0xc8]
cmp ecx, 2
jne 0x42e0b6
mov edi, dword [esp + 0x48]
mov ecx, dword [esp + 0x30]
sub ecx, edi
sub eax, edx
inc ecx
inc eax
push ecx
mov ecx, dword [esp + 0x60]
push eax
add edx, ecx
mov ecx, dword [esp + 0x58]
push edi
push edx
call fcn.0042e8e0
jmp 0x42e2de
cmp ecx, 1
jne 0x42e2de
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x38]
push edx
mov edx, dword [esp + 0x60]
push eax
push ecx
mov ecx, dword [esp + 0x5c]
push edx
call fcn.0042e8e0
jmp 0x42e2de
cmp ax, 0x10
jne 0x42e343
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x3c]
imul eax, ecx
test ecx, ecx
mov dword [esp + 0x24], eax
jle 0x42e2b2
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x3c]
add eax, ecx
mov dword [esp + 0x30], edx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
sub edx, eax
sub ecx, eax
test di, di
mov dword [esp + 0x24], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x1c], ebp
jne 0x42e145
mov eax, dword [esp + 0x18]
test eax, eax
je 0x42e21b
mov ecx, dword [esp + 0x2c]
mov eax, ebx
and eax, 0xffff
lea edx, [eax + ecx]
cmp edx, 0x4000
jb 0x42e21b
mov esi, 0x4000
sub esi, eax
je 0x42e179
push esi
push ebp
mov ebp, dword [esp + 0x30]
push ebp
call fcn.00497220
add esp, 0xc
jmp 0x42e17d
mov ebp, dword [esp + 0x28]
mov eax, dword [esp + 0x18]
xor ebx, ebx
test eax, eax
mov dword [esp + 0x1c], ebp
je 0x42e1c5
mov eax, dword [esp + 0x20]
mov ecx, 0x4000
sub ecx, esi
push eax
push ecx
lea edx, [esi + ebp]
push 1
push edx
call fcn.00496d40
add edi, esi
add esp, 0x10
cmp di, 0x4000
mov dword [esp + 0x14], edi
jbe 0x42e1bf
and edi, 0x3fff
mov dword [esp + 0x14], edi
jmp 0x42e21b
dec dword [esp + 0x18]
jmp 0x42e21b
mov eax, edi
and eax, 0xffff
lea ecx, [eax + esi]
cmp ecx, 0x4000
jbe 0x42e200
mov eax, dword [esp + 0x20]
mov ecx, 0x4000
sub ecx, esi
lea edx, [esi + edi]
push eax
push ecx
add esi, ebp
and edx, 0x3fff
push 1
push esi
mov dword [esp + 0x24], edx
call fcn.00496d40
add esp, 0x10
jmp 0x42e21b
mov edx, dword [esp + 0x20]
add esi, ebp
push edx
push eax
push 1
push esi
call fcn.00496d40
add esp, 0x10
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
and eax, 0xffff
lea edx, [eax + ecx - 0x10000]
test edx, edx
jle 0x42e27c
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x1c]
movsx ecx, dx
mov edi, dword [esp + 0x10]
sub eax, ecx
mov ecx, eax
mov ebp, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, edx
mov edx, dword [esp + 0x1c]
and ecx, 0xffff
lea esi, [edx + eax]
mov edx, dword [esp + 0x24]
add eax, edx
mov edx, dword [esp + 0x34]
lea edi, [eax + edx + 1]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
jmp 0x42e291
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x10]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov eax, dword [esp + 0x2c]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x1c]
add ebx, eax
lea ebp, [ecx + eax]
mov eax, dword [esp + 0x30]
dec eax
mov dword [esp + 0x30], eax
jne 0x42e114
mov eax, dword [esp + 0xc8]
test eax, eax
je 0x42e2da
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x38]
push edx
mov edx, dword [esp + 0x60]
push eax
push ecx
mov ecx, dword [esp + 0x5c]
push edx
call fcn.0042e8e0
mov esi, dword [esp + 0x14]
mov ax, word [esp + 0xba]
mov cx, ax
dec ax
test cx, cx
mov word [esp + 0xba], ax
jne 0x42d2ba
mov edi, dword [esp + 0xac]
inc word [edi + 0x2e]
mov ax, word [edi + 0x2e]
cmp ax, word [edi + 0x2c]
jb 0x42e315
mov byte [edi + 0x3a], 1
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x74]
inc eax
cmp eax, ecx
mov dword [esp + 0x90], eax
jl 0x42d214
xor eax, eax
mov ax, word [edi + 0x2e]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb4
ret 4
mov ax, word [ecx]
mov dword [esp + 0x30], ebp
sub ax, 6
test si, si
mov dword [esp + 0x24], eax
jne 0x42e363
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x42e446
mov ecx, ebx
mov edx, eax
and ecx, 0xffff
and edx, 0xffff
add edx, ecx
cmp edx, 0x4000
jb 0x42e446
mov edx, 0x4000
sub edx, ecx
mov dword [esp + 0x1c], edx
je 0x42e39f
mov eax, edx
push eax
push ebp
push edi
call fcn.00497220
mov edx, dword [esp + 0x28]
add esp, 0xc
mov eax, dword [esp + 0x18]
xor ebx, ebx
test eax, eax
mov dword [esp + 0x30], edi
je 0x42e3e7
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov edx, 0x4000
push ecx
sub edx, ebp
lea eax, [edi + ebp]
push edx
push 1
push eax
call fcn.00496d40
add esi, ebp
add esp, 0x10
cmp si, 0x4000
mov dword [esp + 0x14], esi
jbe 0x42e3e1
and esi, 0x3fff
jmp 0x42e43e
dec dword [esp + 0x18]
jmp 0x42e442
mov eax, esi
and eax, 0xffff
lea ecx, [eax + edx]
cmp ecx, 0x4000
jbe 0x42e425
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov ecx, 0x4000
add esi, eax
sub ecx, eax
push edx
push ecx
add eax, edi
and esi, 0x3fff
push 1
push eax
mov dword [esp + 0x24], esi
call fcn.00496d40
add esp, 0x10
jmp 0x42e442
mov edx, dword [esp + 0x20]
push edx
push eax
mov eax, dword [esp + 0x24]
push 1
add eax, edi
push eax
call fcn.00496d40
add esp, 0x10
xor esi, esi
mov dword [esp + 0x14], esi
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x30]
mov ebp, eax
and ebp, 0xffff
add ebp, edx
add ebx, eax
jmp 0x42e2de
xor eax, eax
mov dword [esp + 0x48], ebp
mov ax, word [ecx]
sub eax, 6
test si, si
jne 0x42e478
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x42e550
mov ecx, ebx
and ecx, 0xffff
lea edx, [ecx + eax]
cmp edx, 0x4000
jb 0x42e550
mov edx, 0x4000
sub edx, ecx
mov dword [esp + 0x1c], edx
je 0x42e4ad
mov eax, edx
push eax
push ebp
push edi
call fcn.00497220
mov edx, dword [esp + 0x28]
add esp, 0xc
mov eax, dword [esp + 0x18]
xor ebx, ebx
test eax, eax
mov dword [esp + 0x48], edi
je 0x42e4f5
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov edx, 0x4000
push ecx
sub edx, ebp
lea eax, [edi + ebp]
push edx
push 1
push eax
call fcn.00496d40
add esi, ebp
add esp, 0x10
cmp si, 0x4000
mov dword [esp + 0x14], esi
jbe 0x42e4ef
and esi, 0x3fff
jmp 0x42e54c
dec dword [esp + 0x18]
jmp 0x42e550
mov eax, esi
and eax, 0xffff
lea ecx, [eax + edx]
cmp ecx, 0x4000
jbe 0x42e533
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov ecx, 0x4000
add esi, eax
sub ecx, eax
push edx
push ecx
add eax, edi
and esi, 0x3fff
push 1
push eax
mov dword [esp + 0x24], esi
call fcn.00496d40
add esp, 0x10
jmp 0x42e550
mov edx, dword [esp + 0x20]
push edx
push eax
mov eax, dword [esp + 0x24]
push 1
add eax, edi
push eax
call fcn.00496d40
add esp, 0x10
xor esi, esi
mov dword [esp + 0x14], esi
mov eax, dword [esp + 0x48]
xor ebp, ebp
movsx ecx, word [eax]
add eax, 2
mov edx, ecx
dec ecx
test edx, edx
je 0x42e5dd
inc ecx
mov dword [esp + 0x30], ecx
xor ecx, ecx
xor edx, edx
mov cl, byte [eax]
mov dl, byte [eax + 1]
add ebp, ecx
inc eax
mov edi, edx
inc eax
test edi, edi
mov dword [esp + 0x70], ebp
jne 0x42e584
mov edi, 0x100
mov ecx, dword [esp + 0x24]
cmp word [ecx + 4], 0xb
jne 0x42e59f
lea edx, [edi + edi*2]
mov ecx, eax
test edx, edx
jle 0x42e59f
shl byte [ecx], 2
inc ecx
dec edx
jne 0x42e598
test edi, edi
jle 0x42e5d0
mov edx, dword [esp + 0x94]
mov ecx, edi
lea ebp, [edx + ebp*4 + 1]
mov byte [ebp + 2], 1
mov dl, byte [eax]
inc eax
mov byte [ebp - 1], dl
add ebp, 4
mov dl, byte [eax]
inc eax
mov byte [ebp - 4], dl
mov dl, byte [eax]
inc eax
mov byte [ebp - 3], dl
dec ecx
jne 0x42e5b0
mov ebp, dword [esp + 0x70]
mov ecx, dword [esp + 0x30]
add ebp, edi
dec ecx
mov dword [esp + 0x30], ecx
jne 0x42e568
mov eax, dword [esp + 0xb0]
mov ecx, dword [esp + 0xa8]
mov edx, dword [esp + 0x88]
mov edi, dword [esp + 0xa4]
mov ebp, dword [esp + 0x50]
push eax
mov eax, dword [esp + 0x98]
push ecx
mov ecx, dword [esp + 0xa4]
push edx
add ecx, 0x28
push eax
push ecx
push edi
mov ecx, ebp
call fcn.0042b550
mov eax, dword [esp + 0xc8]
test eax, eax
je 0x42e659
push 0x68
push edi
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
test eax, eax
je 0x42e63e
mov al, byte [esp + 0x88]
test al, al
jne 0x42e659
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x38]
push edx
mov edx, dword [esp + 0x60]
push eax
push ecx
push edx
mov ecx, ebp
call fcn.0042e8e0
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x48]
xor eax, eax
mov ax, word [ecx]
sub eax, 6
add ebx, eax
lea ebp, [edx + eax]
jmp 0x42e2de