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

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffff1c
mov esi, edx
xor edx, edx
xor edi, edi
mov dword [esp + 4], ecx
mov dword [esp], eax
mov eax, dword [esi]
xor ecx, ecx
mov dword [esp + 8], eax
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], edi
mov eax, dword [esp + 8]
mov ebp, dword [eax]
mov eax, dword [ebp]
mov dword [esp + 0x38], eax
mov byte [esp + 0x3c], 0
mov edx, dword [esp + 0x38]
cmp byte [edx + 0x57], 0
je 0x6186ac
jmp 0x619378
mov edi, dword [esp + 4]
mov eax, dword [esp + 8]
shl edi, 4
add eax, 0x1f0
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
xor edx, edx
mov ebx, dword [edi]
mov dword [eax], edx
mov eax, dword [esp + 0xc]
mov edx, dword [ebx + 0xc]
call fcn.00619748
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
xor ecx, ecx
mov cl, byte [ebx]
mov dword [esp + 0x34], ecx
cmp dword [esp + 0x34], 0x31
jne 0x618748
mov edx, ebx
mov eax, ebp
call fcn.0061f2d0
test eax, eax
jne 0x619378
test byte [ebx + 5], 0x10
je 0x61871e
mov edx, dword [ebx + 0x14]
mov eax, dword [esp + 0xc]
call fcn.0061841c
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], edx
jmp 0x618730
mov edx, dword [ebx + 0x14]
mov eax, dword [esp + 0xc]
call fcn.00619764
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], edx
mov eax, dword [edi + 0x20]
mov edx, dword [edi + 0x24]
or eax, dword [esp + 0x10]
or edx, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], edx
jmp 0x61879a
mov edx, dword [ebx + 0x10]
mov eax, dword [esp + 0xc]
call fcn.00619748
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], edx
cmp dword [ebx + 0xc], 0
je 0x61876f
test dword [ebx + 4], 0x41000
jne 0x61876f
cmp dword [ebx + 0x14], 0
je 0x618784
mov edx, ebx
mov eax, dword [esp + 0xc]
call fcn.00619718
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], edx
jmp 0x61879a
mov eax, dword [edi + 0x20]
mov edx, dword [edi + 0x24]
or eax, dword [esp + 0x10]
or edx, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], edx
mov ecx, dword [esp + 0xc]
cmp dword [ecx], 0
je 0x6187a9
or word [edi + 0xa], 0x1000
test byte [ebx + 4], 3
je 0x618864
mov edx, dword [ebx + 0x24]
mov eax, dword [esp + 0xc]
call fcn.0060ca08
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], edx
test byte [ebx + 4], 1
je 0x618822
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
or dword [esp + 0x18], eax
or dword [esp + 0x1c], edx
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
sub eax, 1
sbb edx, 0
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
shrd eax, edx, 1
shr edx, 1
cmp edx, dword [esp + 0x48]
jne 0x61880b
cmp eax, dword [esp + 0x44]
jb 0x618864
push str.ON_clause_references_tables_to_its_right
push ebp
call fcn.00645028
add esp, 8
jmp 0x619378
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
shrd eax, edx, 1
shr edx, 1
cmp edx, dword [esp + 0x48]
jne 0x61883a
cmp eax, dword [esp + 0x44]
jb 0x618864
mov ecx, dword [esp]
cmp dword [ecx], 0
jle 0x618860
mov ecx, dword [esp]
test byte [ecx + 0x2c], 0x40
je 0x618860
push str.ON_clause_references_tables_to_its_right
push ebp
call fcn.00645028
add esp, 8
jmp 0x619378
and dword [ebx + 4], 0xfffffffd
mov eax, dword [esp + 0x18]
mov dword [edi + 0x28], eax
mov eax, dword [esp + 0x1c]
mov dword [edi + 0x2c], eax
mov dword [edi + 0x14], 0xffffffff
mov dword [edi + 0x10], 0xffffffff
mov word [edi + 0xc], 0
mov eax, dword [esp + 0x34]
call fcn.00617730
test eax, eax
je 0x618afd
mov eax, dword [ebx + 0xc]
call fcn.0061c174
mov dword [esp + 0x54], eax
mov eax, dword [ebx + 0x10]
call fcn.0061c174
mov dword [esp + 0x58], eax
mov eax, dword [edi + 0x20]
mov edx, dword [edi + 0x24]
and eax, dword [esp + 0x10]
and edx, dword [esp + 0x14]
cmp edx, 0
jne 0x6188cd
cmp eax, 0
jne 0x6188cd
mov cx, 0x3fff
jmp 0x6188d1
mov cx, 0x800
mov word [esp + 0x5c], cx
cmp dword [edi + 0x1c], 0
jle 0x6188f1
mov edx, dword [esp + 0x54]
mov eax, dword [edi + 0x1c]
shl eax, 4
mov edx, dword [edx + 0x14]
mov eax, dword [edx + eax - 8]
mov dword [esp + 0x54], eax
mov ecx, dword [esp + 0x34]
push ecx
lea edx, [esp + 0x50]
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 4]
call fcn.006185c8
test eax, eax
je 0x61892b
mov ecx, dword [esp + 0x4c]
mov dword [edi + 0x14], ecx
mov eax, dword [esp + 0x50]
mov dword [edi + 0x18], eax
mov eax, dword [esp + 0x34]
call fcn.006177c4
and ax, word [esp + 0x5c]
mov word [edi + 0xc], ax
cmp dword [esp + 0x34], 0x2d
jne 0x618938
or word [edi + 0xa], 0x800
cmp dword [esp + 0x58], 0
je 0x618aad
mov edx, dword [esp + 0x34]
push edx
lea edx, [esp + 0x50]
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 4]
call fcn.006185c8
test eax, eax
je 0x618aad
mov ecx, dword [esp + 0x58]
test byte [ecx + 4], 0x20
jne 0x618aad
mov word [esp + 0x68], 0
cmp dword [edi + 0x14], 0
jl 0x618a2c
xor ecx, ecx
mov edx, ebx
mov eax, dword [esp + 0x38]
call fcn.0061d658
mov dword [esp + 0x64], eax
mov ecx, dword [esp + 0x38]
cmp byte [ecx + 0x57], 0
je 0x6189ad
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x38]
call fcn.0061d184
jmp 0x619378
mov cx, 3
mov edx, dword [esp + 0x64]
mov eax, esi
call fcn.00617648
mov dword [esp + 0x6c], eax
cmp dword [esp + 0x6c], 0
je 0x619378
mov ecx, dword [esp + 0x6c]
shl ecx, 4
lea ecx, [ecx + ecx*2]
add ecx, dword [esi + 0x18]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x6c]
mov eax, esi
call fcn.00617ccc
cmp dword [esp + 0x34], 0x2d
jne 0x6189fc
mov ecx, dword [esp + 0x60]
or word [ecx + 0xa], 0x800
mov edi, dword [esp + 4]
mov eax, ebp
shl edi, 4
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
or word [edi + 0xa], 8
mov edx, dword [esp + 0x64]
call fcn.006183a0
test eax, eax
je 0x618a34
or word [edi + 0xc], 0x800
mov word [esp + 0x68], 0x800
jmp 0x618a34
mov dword [esp + 0x64], ebx
mov dword [esp + 0x60], edi
mov edx, dword [esp + 0x64]
mov eax, ebp
call fcn.00617754
mov ecx, dword [esp + 0x60]
or word [ecx + 0xa], ax
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x4c]
mov dword [ecx + 0x14], eax
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x50]
mov dword [edx + 0x18], eax
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
or eax, dword [esp + 0x20]
or edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x60]
mov dword [ecx + 0x20], eax
mov dword [ecx + 0x24], edx
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x18]
mov dword [ecx + 0x28], eax
mov eax, dword [esp + 0x1c]
mov dword [ecx + 0x2c], eax
mov edx, dword [esp + 0x64]
xor eax, eax
mov al, byte [edx]
call fcn.006177c4
add ax, word [esp + 0x68]
and ax, word [esp + 0x5c]
mov edx, dword [esp + 0x60]
mov word [edx + 0xc], ax
jmp 0x618fd7
cmp dword [esp + 0x34], 0x32
jne 0x618fd7
test byte [ebx + 4], 1
jne 0x618fd7
mov eax, dword [esp + 0x54]
call fcn.0061e3d8
test eax, eax
jne 0x618fd7
mov byte [ebx], 0xaa
mov dword [ebx + 8], 0x67c97e
or dword [ebx + 4], 0x20000000
mov dword [edi + 0x28], 0
mov dword [edi + 0x2c], 0
mov word [edi + 0xc], 0
jmp 0x618fd7
xor edx, edx
mov dl, byte [ebx]
cmp edx, 0x30
jne 0x618bcd
xor ecx, ecx
mov cl, byte [esi + 8]
cmp ecx, 0x2c
jne 0x618bcd
mov ecx, dword [ebx + 0x14]
xor eax, eax
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], eax
mov dword [esp + 0xe0], str.97match
mov edx, dword [esp + 0x74]
shl edx, 4
mov eax, dword [esp + 0x70]
mov edx, dword [eax + edx + 8]
xor ecx, ecx
mov eax, dword [esp + 0x38]
call fcn.0061d658
push eax
xor ecx, ecx
mov edx, dword [ebx + 0xc]
mov eax, dword [esp + 0x3c]
call fcn.0061d658
mov ecx, eax
mov edx, dword [esp + 0xe4]
movzx edx, byte [edx]
mov eax, ebp
call fcn.0061cbf0
mov edi, eax
mov edx, ebx
mov eax, edi
call fcn.00617cb0
mov cx, 3
mov edx, edi
mov eax, esi
call fcn.00617648
mov dword [esp + 0x78], eax
mov ecx, dword [esp + 0x78]
mov edx, esi
mov eax, dword [esp]
call fcn.00618650
mov edi, dword [esp + 4]
mov ecx, dword [esp + 4]
shl edi, 4
mov edx, dword [esp + 0x78]
mov eax, esi
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
call fcn.00617ccc
inc dword [esp + 0x74]
inc dword [esp + 0xe0]
cmp dword [esp + 0x74], 2
jl 0x618b30
jmp 0x618fd7
xor ecx, ecx
mov cl, byte [ebx]
cmp ecx, 0x2b
jne 0x618bf6
mov ecx, dword [esp + 4]
mov edx, esi
mov eax, dword [esp]
call fcn.00617e30
mov edi, dword [esp + 4]
shl edi, 4
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
jmp 0x618fd7
xor eax, eax
mov al, byte [ebx]
cmp eax, 0x33
jne 0x618d31
mov edx, dword [ebx + 0xc]
xor ecx, ecx
mov cl, byte [edx]
cmp ecx, 0xa7
jne 0x618fd7
mov ecx, dword [ebx + 0xc]
cmp word [ecx + 0x20], 0
jl 0x618fd7
test byte [ebx + 4], 1
jne 0x618fd7
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x80], eax
push 0
xor ecx, ecx
mov edx, 0x79
mov eax, dword [esp + 0x3c]
call fcn.0061ca70
push eax
xor ecx, ecx
mov edx, dword [esp + 0x84]
mov eax, dword [esp + 0x3c]
call fcn.0061d658
mov ecx, eax
mov edx, 0x36
mov eax, ebp
call fcn.0061cbf0
mov dword [esp + 0x7c], eax
mov cx, 0x83
mov edx, dword [esp + 0x7c]
mov eax, esi
call fcn.00617648
mov dword [esp + 0x84], eax
cmp dword [esp + 0x84], 0
je 0x618fd7
mov ecx, dword [esp + 0x84]
shl ecx, 4
lea ecx, [ecx + ecx*2]
add ecx, dword [esi + 0x18]
mov dword [esp + 0x88], ecx
mov eax, dword [esp + 0x88]
mov dword [eax + 0x20], 0
mov dword [eax + 0x24], 0
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x88]
mov ecx, dword [edx + 0x1c]
mov dword [eax + 0x14], ecx
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x88]
movsx ecx, word [edx + 0x20]
mov dword [eax + 0x18], ecx
mov eax, esi
mov edx, dword [esp + 0x88]
mov word [edx + 0xc], 4
mov edx, dword [esp + 0x84]
mov ecx, dword [esp + 4]
call fcn.00617ccc
mov edi, dword [esp + 4]
shl edi, 4
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
or word [edi + 0xa], 8
mov eax, dword [esp + 0x88]
mov edx, dword [edi + 0x28]
mov dword [eax + 0x28], edx
mov edx, dword [edi + 0x2c]
mov dword [eax + 0x2c], edx
jmp 0x618fd7
xor ecx, ecx
mov cl, byte [ebx]
cmp ecx, 0xac
jne 0x618fd7
xor ecx, ecx
mov cl, byte [esi + 8]
cmp ecx, 0x2c
jne 0x618fd7
lea eax, [esp + 0x2c]
push eax
lea edx, [esp + 0x34]
push edx
lea ecx, [esp + 0x30]
mov edx, ebx
mov eax, ebp
call fcn.006177f4
test eax, eax
je 0x618fd7
mov word [esp + 0xa8], 0x103
mov ecx, dword [ebx + 0x14]
mov eax, dword [ecx + 0x18]
mov dword [esp + 0x8c], eax
xor ecx, ecx
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x38]
call fcn.0061d658
mov dword [esp + 0x90], eax
cmp dword [esp + 0x30], 0
je 0x618dfd
mov ecx, dword [ebp]
cmp byte [ecx + 0x57], 0
jne 0x618dfd
or word [edi + 0xa], 0x400
xor eax, eax
jmp 0x618def
mov ecx, dword [esp + 0x28]
mov ecx, dword [ecx + 8]
add ecx, eax
push ecx
xor ecx, ecx
mov cl, dl
pop edi
mov cl, byte [ecx + 0x67fab6]
and cl, 0x20
not cl
and cl, dl
and edx, 0xff
mov byte [edi], cl
mov ecx, dword [esp + 0x90]
mov ecx, dword [ecx + 8]
lea edi, [ecx + eax]
mov cl, byte [edx + 0x67f9a4]
mov byte [edi], cl
inc eax
mov edx, dword [esp + 0x28]
mov ecx, dword [edx + 8]
mov dl, byte [ecx + eax]
test dl, dl
jne 0x618db5
mov eax, dword [esp + 0x38]
cmp byte [eax + 0x57], 0
jne 0x618e7a
mov ecx, dword [esp + 0x90]
mov eax, dword [ecx + 8]
call fcn.00644e74
mov edx, dword [esp + 0x90]
add eax, dword [edx + 8]
dec eax
mov dword [esp + 0xac], eax
mov ecx, dword [esp + 0xac]
mov al, byte [ecx]
mov byte [esp + 0xaa], al
cmp dword [esp + 0x30], 0
je 0x618e69
xor edx, edx
mov dl, byte [esp + 0xaa]
cmp edx, 0x40
jne 0x618e53
xor ecx, ecx
mov dword [esp + 0x2c], ecx
xor eax, eax
mov al, byte [esp + 0xaa]
mov dl, byte [eax + 0x67f9a4]
mov byte [esp + 0xaa], dl
mov eax, dword [esp + 0xac]
mov cl, byte [esp + 0xaa]
inc ecx
mov byte [eax], cl
cmp dword [esp + 0x30], 0
je 0x618e88
mov edx, str.NOCASE
jmp 0x618e8d
mov edx, str.BINARY
mov dword [esp + 0xa4], edx
xor ecx, ecx
mov edx, dword [esp + 0x8c]
mov eax, dword [esp + 0x38]
call fcn.0061d658
mov dword [esp + 0x94], eax
mov ecx, dword [esp + 0x28]
push ecx
mov ecx, dword [esp + 0xa8]
mov edx, dword [esp + 0x98]
mov eax, ebp
call fcn.0061c14c
mov ecx, eax
mov edx, 0x39
mov eax, ebp
call fcn.0061cbf0
mov dword [esp + 0x94], eax
mov edx, ebx
mov eax, dword [esp + 0x94]
call fcn.00617cb0
mov cx, word [esp + 0xa8]
mov edx, dword [esp + 0x94]
mov eax, esi
call fcn.00617648
mov dword [esp + 0x9c], eax
xor ecx, ecx
mov edx, dword [esp + 0x8c]
mov eax, dword [esp + 0x38]
call fcn.0061d658
mov dword [esp + 0x98], eax
mov ecx, dword [esp + 0x90]
push ecx
mov ecx, dword [esp + 0xa8]
mov edx, dword [esp + 0x9c]
mov eax, ebp
call fcn.0061c14c
mov ecx, eax
mov edx, 0x38
mov eax, ebp
call fcn.0061cbf0
mov dword [esp + 0x98], eax
mov edx, ebx
mov eax, dword [esp + 0x98]
call fcn.00617cb0
mov cx, word [esp + 0xa8]
mov edx, dword [esp + 0x98]
mov eax, esi
call fcn.00617648
mov dword [esp + 0xa0], eax
mov ecx, dword [esp + 0x9c]
mov edx, esi
mov eax, dword [esp]
call fcn.00618650
mov ecx, dword [esp + 0xa0]
mov edx, esi
mov eax, dword [esp]
call fcn.00618650
mov edi, dword [esp + 4]
shl edi, 4
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
cmp dword [esp + 0x2c], 0
je 0x618fd7
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x9c]
mov eax, esi
call fcn.00617ccc
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0xa0]
mov eax, esi
call fcn.00617ccc
xor ecx, ecx
mov cl, byte [ebx]
cmp ecx, 0x35
je 0x618fed
xor eax, eax
mov al, byte [ebx]
cmp eax, 0x2d
jne 0x6190d1
mov eax, dword [ebx + 0xc]
call fcn.0061c510
mov dword [esp + 0x40], eax
dec eax
jle 0x6190d1
mov eax, dword [ebx + 0x10]
call fcn.0061c510
cmp eax, dword [esp + 0x40]
jne 0x6190d1
mov edx, dword [ebx + 0xc]
test byte [edx + 5], 0x10
je 0x619028
mov ecx, dword [ebx + 0x10]
test byte [ecx + 5], 0x10
jne 0x6190d1
xor ecx, ecx
mov cl, byte [esi + 8]
cmp ecx, 0x2c
jne 0x6190d1
xor edi, edi
cmp edi, dword [esp + 0x40]
jge 0x6190b4
mov eax, dword [esp + 0x40]
mov ecx, edi
push eax
mov eax, ebp
mov edx, dword [ebx + 0xc]
call fcn.0061c59c
mov dword [esp + 0xb4], eax
mov eax, ebp
mov edx, dword [esp + 0x40]
mov ecx, edi
push edx
mov edx, dword [ebx + 0x10]
call fcn.0061c59c
push eax
xor edx, edx
mov dl, byte [ebx]
mov ecx, dword [esp + 0xb8]
mov eax, ebp
call fcn.0061cbf0
mov dword [esp + 0xb0], eax
mov edx, ebx
mov eax, dword [esp + 0xb0]
call fcn.00617cb0
mov cx, 0x8001
mov edx, dword [esp + 0xb0]
mov eax, esi
call fcn.00617648
mov ecx, eax
mov edx, esi
mov eax, dword [esp]
call fcn.00618650
inc edi
cmp edi, dword [esp + 0x40]
jl 0x61903e
mov edi, dword [esp + 4]
shl edi, 4
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
or word [edi + 0xa], 6
mov word [edi + 0xc], 0x2000
jmp 0x61935d
xor eax, eax
mov al, byte [ebx]
cmp eax, 0x31
jne 0x619171
cmp dword [edi + 0x1c], 0
jne 0x619171
mov edx, dword [ebx + 0xc]
xor ecx, ecx
mov cl, byte [edx]
cmp ecx, 0xb1
jne 0x619171
test byte [ebx + 5], 0x10
je 0x619171
mov ecx, dword [ebx + 0x14]
cmp dword [ecx + 0x34], 0
je 0x61910f
mov eax, dword [ebx + 0x14]
test byte [eax + 5], 2
je 0x619171
mov edx, dword [ebx + 0x14]
cmp dword [edx + 0x44], 0
jne 0x619171
xor ecx, ecx
mov cl, byte [esi + 8]
cmp ecx, 0x2c
jne 0x619171
xor ebp, ebp
jmp 0x619160
mov cx, 0x8002
mov edx, ebx
mov eax, esi
call fcn.00617648
mov edi, eax
mov eax, edi
add eax, eax
lea eax, [eax + eax*2]
mov edx, dword [esi + 0x18]
lea ecx, [ebp + 1]
mov dword [edx + eax*8 + 0x1c], ecx
mov ecx, edi
mov edx, esi
mov eax, dword [esp]
call fcn.00618650
mov ecx, dword [esp + 4]
mov edx, edi
mov eax, esi
call fcn.00617ccc
inc ebp
mov eax, dword [ebx + 0xc]
call fcn.0061c510
cmp ebp, eax
jl 0x619126
jmp 0x61935d
xor edx, edx
mov dl, byte [esi + 8]
cmp edx, 0x2c
jne 0x61935d
xor ecx, ecx
mov dword [esp + 0xb8], ecx
xor ecx, ecx
mov dword [esp + 0xbc], ecx
lea eax, [esp + 0xbc]
push eax
lea edx, [esp + 0xbc]
push edx
lea ecx, [esp + 0x44]
mov edx, ebx
mov eax, dword [esp + 0x40]
call fcn.00617aec
mov dword [esp + 0xc0], eax
jmp 0x619346
mov edx, dword [esp + 0xb8]
mov eax, dword [esp + 0xc]
call fcn.00619748
mov dword [esp + 0xd4], eax
mov dword [esp + 0xd8], edx
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xc]
call fcn.00619748
mov dword [esp + 0xcc], eax
mov dword [esp + 0xd0], edx
mov eax, dword [esp + 0xd4]
mov edx, dword [esp + 0xd8]
and eax, dword [esp + 0xcc]
and edx, dword [esp + 0xd0]
cmp edx, 0
jne 0x61931c
cmp eax, 0
jne 0x61931c
xor ecx, ecx
mov edx, dword [esp + 0xb8]
mov eax, dword [esp + 0x38]
call fcn.0061d658
push eax
xor ecx, ecx
mov edx, 0x2e
mov eax, ebp
call fcn.0061cbf0
test byte [ebx + 4], 1
je 0x61925b
test eax, eax
je 0x61925b
or dword [eax + 4], 1
mov ecx, dword [ebx + 0x24]
mov dword [eax + 0x24], ecx
mov cx, 3
mov edx, eax
mov eax, esi
call fcn.00617648
mov dword [esp + 0xc4], eax
mov ecx, dword [esp + 0xc4]
shl ecx, 4
lea ecx, [ecx + ecx*2]
add ecx, dword [esi + 0x18]
mov dword [esp + 0xc8], ecx
mov eax, dword [esp + 0xc8]
mov edx, dword [esp + 0xd4]
mov dword [eax + 0x20], edx
mov edx, dword [esp + 0xd8]
mov dword [eax + 0x24], edx
mov ecx, dword [esp + 0xbc]
mov edx, dword [esp + 0xc8]
mov eax, dword [ecx + 0x1c]
mov dword [edx + 0x14], eax
mov ecx, dword [esp + 0xbc]
mov edx, dword [esp + 0xc8]
movsx eax, word [ecx + 0x20]
mov dword [edx + 0x18], eax
mov ecx, dword [esp + 0xc8]
mov word [ecx + 0xc], pe_nt_image_headers32
mov eax, dword [esp + 0xc8]
mov dl, byte [esp + 0x3c]
mov byte [eax + 0xf], dl
mov eax, esi
mov edx, dword [esp + 0xc4]
mov ecx, dword [esp + 4]
call fcn.00617ccc
mov edi, dword [esp + 4]
shl edi, 4
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
or word [edi + 0xa], 8
mov eax, dword [esp + 0xc8]
mov edx, dword [edi + 0x28]
mov dword [eax + 0x28], edx
mov edx, dword [edi + 0x2c]
mov dword [eax + 0x2c], edx
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0xdc], ecx
mov ecx, dword [esp + 0xb8]
mov dword [esp + 0xbc], ecx
mov eax, dword [esp + 0xdc]
mov dword [esp + 0xb8], eax
mov edx, dword [esp + 0xc0]
add dword [esp + 0xc0], 0xffffffff
test edx, edx
jg 0x6191bc
mov edi, dword [esp + 4]
shl edi, 4
lea edi, [edi + edi*2]
add edi, dword [esi + 0x18]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
or dword [edi + 0x20], eax
or dword [edi + 0x24], edx
add esp, 0xe4
pop ebp
pop edi
pop esi
pop ebx
ret