Function at 0x5696b0
Capabilities:
Enumerate pe sections
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xac
mov ebx, dword [esp + 0xc4]
mov ebp, dword [esp + 0xc0]
test ebx, ebx
je 0x5696fb
mov dword [ebx], 0
mov edx, ebx
mov eax, ebp
mov dword [ebx + 4], 0
mov dword [ebx + 0x10], 0
call fcn.00568b00
cmp eax, 0xffffffff
je 0x569aa0
cmp eax, 1
je 0x569a80
call fcn.0056b0b0
mov edi, dword [esp + 0xc8]
mov dword [ebp + 0x30], eax
add edi, eax
mov dword [esp + 0x20], edi
mov edx, dword [ebp + 0x14]
mov ecx, eax
sub ecx, edx
cmp ecx, 0x5265bff
ja 0x569a90
cmp ecx, 0x3e7
seta al
test al, al
jne 0x569ab0
mov ecx, 1
mov edx, ebx
mov eax, ebp
call fcn.00568e70
cmp eax, 0xffffffff
je 0x569aa0
cmp eax, 1
je 0x569a80
lea eax, [ebp + 0x86c]
mov dword [esp + 0x2c], 0x100
mov dword [esp + 0x28], eax
lea eax, [ebp + 0x286c]
mov dword [esp + 0x24], eax
mov dword [esp + 0xc4], ebx
lea eax, [esp + 0x68]
mov dword [esp + 0xc], 1
mov esi, dword [esp + 0x28]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x6c], esi
mov dword [esp + 4], eax
mov eax, dword [ebp]
mov dword [esp + 0x68], 0x1000
mov dword [esp], eax
call fcn.0056b920
cmp eax, 0xfffffffe
je 0x569ac0
test eax, eax
js 0x569aa0
je 0x569acb
mov edx, dword [ebp + 0x288c]
add dword [ebp + 0x2884], eax
add dword [ebp + 0x2888], 1
mov dword [ebp + 0x2874], esi
mov dword [ebp + 0x2878], eax
test edx, edx
je 0x56980c
mov eax, dword [esp + 0xc4]
mov dword [esp], ebp
mov dword [esp + 4], eax
call edx
cmp eax, 0xffffffff
je 0x569aa0
cmp eax, 1
je 0x569a68
mov eax, dword [ebp + 0x2878]
cmp eax, 1
jbe 0x569ac0
mov eax, dword [ebp + 0x2874]
mov dword [esp + 0x3c], eax
movzx eax, word [eax]
mov dword [esp], eax
mov eax, dword [sym.imp.WS2_32.dll_ntohs]
mov dword [esp + 0x34], eax
call eax
mov ecx, eax
mov edx, eax
and ax, 0xc000
sub esp, 4
mov ebx, eax
mov word [esp + 0x42], ax
mov eax, dword [ebp + 0x858]
and cx, 0xfff
shr ebx, 0xe
and ebx, 2
lea esi, [ebx + 6]
add ebx, 2
test eax, eax
cmovne ebx, esi
cmp cx, 0xfff
je 0x569b80
movzx ecx, cx
cmp ecx, dword [ebp + 0x28]
jae 0x569ac0
imul ecx, ecx, 0x178
add ecx, dword [ebp + 0x24]
mov dword [esp + 0x30], ecx
mov edi, ecx
mov ecx, dword [ecx + 0x24]
test ecx, ecx
je 0x569ac0
cmp ecx, 9
je 0x569ac0
mov ecx, dword [edi + 0x18]
cmp dword [ebp + 0x286c], ecx
je 0x56a6f8
cmp ecx, 0xffffffff
jne 0x569ac0
mov edi, dword [esp + 0x30]
cmp word [edi + 0xc], 0xffe
ja 0x5698d0
mov ecx, edx
shr ecx, 0xc
and ecx, 3
cmp cl, byte [edi + 0x15]
jne 0x569ac0
lea esi, [esi]
and dh, 0x40
jne 0x56a608
mov esi, dword [ebp + 0x2874]
test eax, eax
je 0x569928
lea edx, [esi + ebx - 4]
xor ecx, ecx
cmp dword [esp + 0x30], 0
mov edi, dword [edx]
je 0x5698f9
mov ecx, dword [esp + 0x30]
mov ecx, dword [ecx + 0x10]
mov dword [edx], ecx
mov edx, dword [ebp + 0x2878]
mov dword [esp + 0x74], esi
mov dword [esp + 0x70], edx
lea edx, [esp + 0x70]
mov dword [esp + 4], 1
mov dword [esp], edx
call eax
cmp edi, eax
jne 0x569ac0
mov esi, dword [ebp + 0x2874]
mov edi, dword [esp + 0x30]
mov eax, dword [ebp + 0x2878]
test edi, edi
je 0x56994d
mov edx, dword [ebp + 0x286c]
mov dword [edi + 0x18], edx
movzx edx, word [ebp + 0x2870]
add dword [edi + 0x40], eax
mov word [edi + 0x1c], dx
add ebx, esi
add esi, eax
cmp ebx, esi
jae 0x569a68
mov dword [esp + 0xc0], ebp
mov ebp, dword [esp + 0x30]
lea eax, [ebx + 4]
cmp esi, eax
jb case.0x5699d3.0
movzx edi, byte [ebx]
and edi, 0xf
mov eax, edi
cmp al, 0xc
ja case.0x5699d3.0
movzx edx, al
mov eax, dword [edx*4 + 0x5ac340]
test eax, eax
je case.0x5699d3.0
add eax, ebx
mov dword [esp + 0x30], eax
cmp eax, esi
ja case.0x5699d3.0
test ebp, ebp
jne 0x5699ad
mov eax, edi
cmp al, 2
jne case.0x5699d3.0
movzx eax, word [ebx + 2]
mov dword [esp + 0x38], edx
mov dword [esp], eax
mov eax, dword [esp + 0x34]
call eax
mov word [ebx + 2], ax
mov eax, edi
sub esp, 4
cmp al, 0xc
ja case.0x5699d3.0
mov edx, dword [esp + 0x38]
jmp dword [edx*4 + 0x5ac300]
movzx eax, byte [ebx + 1]
cmp eax, dword [ebp + 0x2c]
jae case.0x5699d3.0
mov eax, dword [ebp + 0x24]
sub eax, 5
cmp eax, 1
ja case.0x5699d3.0
movzx eax, word [ebx + 4]
mov dword [esp], eax
mov eax, dword [esp + 0x34]
call eax
sub esp, 4
movzx eax, ax
mov esi, dword [esp + 0xc0]
add dword [esp + 0x30], eax
mov edi, dword [esp + 0x30]
cmp eax, dword [esi + 0x289c]
ja case.0x5699d3.0
mov edx, dword [esi + 0x2874]
cmp edi, edx
jb case.0x5699d3.0
add edx, dword [esi + 0x2878]
cmp edi, edx
ja case.0x5699d3.0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 1
mov dword [esp + 0xc], eax
lea eax, [ebx + 6]
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp], ebp
call fcn.005681b0
test eax, eax
jne 0x569c50
mov ebp, dword [esp + 0xc0]
lea esi, [esi]
mov esi, dword [esp + 0xc4]
test esi, esi
je 0x569ac0
mov eax, dword [esp + 0xc4]
mov ebx, dword [eax]
test ebx, ebx
je 0x569ac0
mov eax, 1
add esp, 0xac
pop ebx
pop esi
pop edi
pop ebp
ret
sub edx, eax
cmp edx, 0x3e7
seta al
jmp 0x56972c
add esp, 0xac
mov eax, 0xffffffff
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp], ebp
call fcn.00566920
jmp 0x569734
sub dword [esp + 0x2c], 1
jne 0x569777
mov ebx, dword [esp + 0xc4]
mov ecx, 1
mov eax, ebp
mov edx, ebx
call fcn.00568e70
cmp eax, 0xffffffff
je 0x569aa0
cmp eax, 1
je 0x569a80
test ebx, ebx
je 0x569b05
mov edx, ebx
mov eax, ebp
call fcn.00568b00
cmp eax, 0xffffffff
je 0x569aa0
cmp eax, 1
je 0x569a80
mov eax, dword [ebp + 0x30]
mov edi, dword [esp + 0x20]
sub eax, edi
cmp eax, 0x5265bff
jbe 0x569b6f
lea esi, [esp + 0x64]
jmp 0x569b5b
mov ecx, edi
mov dword [esp + 4], esi
sub ecx, eax
mov dword [esp + 0x64], 6
cmp ecx, 0x5265bff
cmovbe edx, ecx
mov dword [esp + 8], edx
mov eax, dword [ebp]
mov dword [esp], eax
call fcn.0056ba80
test eax, eax
jne 0x569aa0
test byte [esp + 0x64], 4
je 0x56a71f
call fcn.0056b0b0
mov edx, eax
mov dword [ebp + 0x30], eax
sub edx, edi
cmp edx, 0x5265bff
ja 0x569b20
xor eax, eax
jmp 0x569a85
mov dword [esp + 0x30], 0
jmp 0x5698d0
movzx eax, byte [ebx + 1]
cmp eax, dword [ebp + 0x2c]
jae case.0x5699d3.0
mov eax, dword [ebp + 0x24]
sub eax, 5
cmp eax, 1
ja case.0x5699d3.0
movzx eax, word [ebx + 6]
mov dword [esp], eax
mov eax, dword [esp + 0x34]
call eax
sub esp, 4
movzx eax, ax
mov edi, dword [esp + 0xc0]
add dword [esp + 0x30], eax
mov dword [esp + 0x38], eax
mov esi, dword [esp + 0x30]
cmp eax, dword [edi + 0x289c]
ja case.0x5699d3.0
mov eax, dword [edi + 0x2874]
cmp esi, eax
jb case.0x5699d3.0
add eax, dword [edi + 0x2878]
cmp esi, eax
ja case.0x5699d3.0
movzx eax, byte [ebx + 1]
movzx edi, word [ebx + 2]
imul eax, eax, 0x3c
add eax, dword [ebp + 0x28]
mov dword [esp + 0x44], eax
mov esi, eax
movzx eax, word [ebx + 4]
mov dword [esp], eax
mov eax, dword [esp + 0x34]
call eax
movzx edx, word [esi + 0x26]
sub esp, 4
mov word [esp + 0x48], ax
mov ecx, edx
movzx eax, di
shr eax, 0xc
shr cx, 0xc
cmp di, dx
jae 0x56ab1e
add eax, 0x10
add ecx, 6
cmp ax, cx
jbe 0x56ab4b
lea esi, [esi]
nop
cmp byte [ebx], 0
js 0x56a6a0
mov eax, dword [esp + 0xc0]
mov esi, dword [eax + 0x2878]
add esi, dword [eax + 0x2874]
cmp esi, dword [esp + 0x30]
jbe 0x56ad61
mov ebx, dword [esp + 0x30]
jmp 0x569964
mov eax, dword [ebp + 0x24]
sub eax, 5
cmp eax, 1
ja case.0x5699d3.0
mov eax, dword [ebx + 4]
mov esi, dword [sym.imp.WS2_32.dll_ntohl]
mov dword [esp], eax
call esi
mov dword [ebp + 0x84], eax
mov eax, dword [ebx + 8]
sub esp, 4
mov dword [esp], eax
call esi
mov dword [ebp + 0x7c], eax
mov eax, dword [ebx + 0xc]
sub esp, 4
mov dword [esp], eax
call esi
mov dword [ebp + 0x80], eax
sub esp, 4
jmp 0x569c50
mov eax, dword [ebp + 0x24]
sub eax, 5
cmp eax, 1
ja case.0x5699d3.0
mov edi, dword [ebp + 0x30]
test edi, edi
je 0x569cea
mov eax, dword [esp + 0xc0]
sub dword [eax + 0x2894], 1
mov eax, dword [ebx + 4]
mov esi, dword [sym.imp.WS2_32.dll_ntohl]
mov dword [esp], eax
call esi
mov dword [ebp + 0x30], eax
mov eax, dword [ebx + 8]
sub esp, 4
mov dword [esp], eax
call esi
mov dword [ebp + 0x34], eax
mov eax, dword [ebp + 0x30]
sub esp, 4
mov esi, dword [esp + 0xc0]
test eax, eax
je 0x56aae6
mov edx, dword [esi + 0x10]
add dword [esi + 0x2894], 1
test edx, edx
je 0x56aacc
cmp eax, edx
cmova eax, edx
shr eax, 0x10
shl eax, 0xc
mov edx, 0x10000
cmp eax, edx
cmovbe edx, eax
cmp eax, 0x1000
mov eax, 0x1000
cmovae eax, edx
mov dword [ebp + 0xb4], eax
jmp 0x569c50
movzx eax, byte [ebx + 1]
cmp eax, dword [ebp + 0x2c]
jae case.0x5699d3.0
mov eax, dword [ebp + 0x24]
sub eax, 5
cmp eax, 1
ja case.0x5699d3.0
movzx eax, word [ebx + 6]
mov edi, dword [esp + 0x34]
mov dword [esp], eax
call edi
sub esp, 4
movzx eax, ax
mov ecx, dword [esp + 0xc0]
add dword [esp + 0x30], eax
mov dword [esp + 0x44], eax
mov esi, dword [esp + 0x30]
cmp eax, dword [ecx + 0x289c]
ja case.0x5699d3.0
mov eax, dword [ecx + 0x2874]
cmp esi, eax
jb case.0x5699d3.0
add eax, dword [ecx + 0x2878]
cmp esi, eax
ja case.0x5699d3.0
movzx eax, word [ebx + 4]
mov dword [esp], eax
call edi
movzx ecx, word [ebp + 0xec]
movzx eax, ax
sub esp, 4
lea edi, [eax + 0x10000]
cmp ax, cx
mov esi, eax
cmovb eax, edi
lea edx, [ecx + 0x8000]
cmp edx, eax
jbe 0x569c50
mov edx, esi
mov edi, esi
and edx, 0x3ff
and di, 0x3ff
mov dword [esp + 0x38], edx
movzx edx, ax
sub edx, dword [esp + 0x38]
cmp ecx, edx
je 0x56ad3f
mov dword [ebp + 0xf0], 0
sub eax, edi
lea edi, [ebp + 0xf4]
mov word [ebp + 0xec], ax
and edi, 0xfffffffc
lea eax, [ebp + 0xf0]
mov dword [ebp + 0x16c], 0
sub eax, edi
sub eax, 0xffffff80
shr eax, 2
mov ecx, eax
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 2
mov dword [esp + 0xc], eax
lea eax, [ebx + 8]
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp], ebp
call fcn.005681b0
test eax, eax
je case.0x5699d3.0
mov eax, dword [esp + 0x38]
mov edx, 1
mov ecx, esi
shl edx, cl
shr eax, 5
or dword [ebp + eax*4 + 0xf0], edx
jmp 0x569c50
movzx eax, byte [ebx + 1]
cmp eax, dword [ebp + 0x2c]
jae case.0x5699d3.0
mov eax, dword [ebp + 0x24]
sub eax, 5
cmp eax, 1
ja case.0x5699d3.0
movzx eax, word [ebx + 6]
mov dword [esp], eax
mov eax, dword [esp + 0x34]
call eax
sub esp, 4
movzx eax, ax
mov dword [esp + 0x38], eax
add dword [esp + 0x30], eax
mov edi, dword [esp + 0x30]
test eax, eax
je case.0x5699d3.0
mov esi, dword [esp + 0xc0]
cmp eax, dword [esi + 0x289c]
ja case.0x5699d3.0
mov eax, dword [esi + 0x2874]
cmp edi, eax
jb case.0x5699d3.0
add eax, dword [esi + 0x2878]
cmp edi, eax
ja case.0x5699d3.0
movzx eax, byte [ebx + 1]
imul eax, eax, 0x3c
add eax, dword [ebp + 0x28]
mov dword [esp + 0x44], eax
mov esi, eax
movzx eax, word [ebx + 4]
mov dword [esp], eax
mov eax, dword [esp + 0x34]
call eax
movzx esi, word [esi + 0x26]
movzx eax, ax
sub esp, 4
mov edx, eax
mov ecx, esi
shr eax, 0xc
mov edi, eax
shr cx, 0xc
cmp dx, si
jae 0x56ab10
lea edi, [eax + 0x10]
add ecx, 6
mov dword [esp + 0x58], edx
cmp cx, di
jb 0x569c50
mov eax, dword [ebx + 0xc]
mov esi, dword [sym.imp.WS2_32.dll_ntohl]
mov dword [esp], eax
call esi
sub esp, 4
mov dword [esp + 0x4c], eax
mov eax, dword [ebx + 8]
mov dword [esp], eax
call esi
sub esp, 4
mov edi, eax
mov dword [esp + 0x50], eax
mov eax, dword [ebx + 0x14]
mov dword [esp], eax
call esi
sub esp, 4
mov dword [esp + 0x48], eax
mov eax, dword [ebx + 0x10]
mov dword [esp], eax
call esi
sub esp, 4
mov esi, eax
mov dword [esp + 0x54], eax
cmp edi, 0x100000
ja case.0x5699d3.0
cmp dword [esp + 0x4c], edi
jae case.0x5699d3.0
mov ecx, dword [esp + 0xc0]
cmp eax, dword [ecx + 0x289c]
ja case.0x5699d3.0
cmp edi, eax
ja case.0x5699d3.0
mov eax, dword [esp + 0x48]
cmp eax, esi
jae case.0x5699d3.0
sub esi, eax
cmp dword [esp + 0x38], esi
ja case.0x5699d3.0
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x58]
mov esi, dword [eax + 0x30]
lea edi, [eax + 0x2c]
cmp esi, edi
je 0x56a030
movzx ecx, word [eax + 0x26]
jmp 0x56a022
cmp cx, ax
ja 0x56a01b
cmp dx, ax
jae 0x56ae18
mov esi, dword [esi + 4]
cmp esi, edi
je 0x56a030
movzx eax, word [esi + 8]
cmp dx, cx
jae 0x56a00d
cmp cx, ax
ja 0x56a012
mov eax, dword [esp + 0x50]
lea edi, [esp + 0x70]
mov ecx, 0xc
mov esi, ebx
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0x10], 1
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
lea eax, [esp + 0x70]
mov dword [esp + 4], eax
mov dword [esp], ebp
mov word [esp + 0x72], dx
call fcn.005681b0
mov esi, eax
test eax, eax
je case.0x5699d3.0
mov edi, dword [esp + 0x4c]
mov eax, dword [esi + 0x44]
mov edx, edi
mov ecx, edi
shr edx, 5
lea eax, [eax + edx*4]
mov edx, 1
shl edx, cl
mov ecx, edx
and ecx, dword [eax]
jne 0x569c50
sub dword [esi + 0x40], 1
mov ecx, dword [esp + 0x38]
or dword [eax], edx
mov eax, dword [esi + 0x48]
mov edi, dword [esp + 0x48]
mov edx, dword [eax + 0xc]
add ecx, edi
cmp ecx, edx
jbe 0x56a0be
sub edx, edi
mov dword [esp + 0x38], edx
mov edi, dword [esp + 0x48]
add edi, dword [eax + 8]
lea edx, [ebx + 0x18]
mov eax, edi
mov edi, dword [esp + 0x38]
mov dword [esp + 4], edx
mov dword [esp], eax
mov dword [esp + 8], edi
call sub.msvcrt.dll_memcpy
cmp dword [esi + 0x40], 0
jne 0x569c50
mov eax, dword [esp + 0x44]
mov dword [esp + 8], 0
mov dword [esp], ebp
mov dword [esp + 4], eax
call fcn.005680c0
jmp 0x569c50
mov eax, dword [ebp + 0x24]
lea edx, [eax - 8]
cmp edx, 1
jbe 0x569c50
test eax, eax
je 0x569c50
mov dword [esp], ebp
call fcn.00567170
mov ecx, dword [ebp + 0x24]
cmp ecx, 7
jbe 0x56ad68
lea eax, [ecx - 5]
cmp eax, 1
jbe 0x56aeaf
cmp ecx, 3
jne 0x56a152
mov eax, dword [esp + 0xc0]
mov dword [eax + 0x20], 1
mov dword [esp], ebp
call fcn.005672d0
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x569c50
mov eax, dword [ebx + 4]
mov dword [esp], eax
call dword [sym.imp.WS2_32.dll_ntohl]
push edx
mov dword [ebp + 0x170], eax
jmp 0x569c50
cmp dword [ebp + 0x24], 1
jne 0x569c50
mov eax, dword [ebx + 0x10]
mov dword [esp], eax
mov eax, dword [sym.imp.WS2_32.dll_ntohl]
mov dword [esp + 0x38], eax
call eax
mov esi, eax
lea eax, [eax - 1]
sub esp, 4
cmp eax, 0xfe
ja 0x56af23
mov eax, dword [ebx + 0x1c]
mov edi, dword [esp + 0x38]
mov dword [esp], eax
call edi
sub esp, 4
cmp eax, dword [ebp + 0x84]
jne 0x56af23
mov eax, dword [ebx + 0x20]
mov dword [esp], eax
call edi
sub esp, 4
cmp eax, dword [ebp + 0x7c]
jne 0x56af23
mov eax, dword [ebx + 0x24]
mov dword [esp], eax
call edi
sub esp, 4
cmp eax, dword [ebp + 0x80]
jne 0x56af23
mov eax, dword [ebp + 0x10]
cmp dword [ebx + 0x28], eax
jne 0x56af23
mov ecx, 0xff
mov edx, 1
mov eax, ebp
call fcn.00568c40
cmp esi, dword [ebp + 0x2c]
jae 0x56a216
mov dword [ebp + 0x2c], esi
movzx eax, word [ebx + 4]
mov dword [esp], eax
mov eax, dword [esp + 0x34]
call eax
mov word [ebp + 0xc], ax
movzx eax, byte [ebx + 6]
sub esp, 4
mov byte [ebp + 0x15], al
movzx eax, byte [ebx + 7]
mov byte [ebp + 0x14], al
mov eax, dword [ebx + 8]
mov dword [esp], eax
mov eax, dword [esp + 0x38]
call eax
mov edx, 0x1000
sub esp, 4
cmp eax, edx
cmova eax, edx
mov edx, 0x240
cmp eax, edx
cmovb eax, edx
cmp eax, dword [ebp + 0xb0]
jae 0x56a269
mov dword [ebp + 0xb0], eax
mov eax, dword [ebx + 0xc]
mov dword [esp], eax
mov eax, dword [esp + 0x38]
call eax
mov edx, 0x10000
sub esp, 4
cmp eax, edx
cmova eax, edx
mov edx, 0x1000
cmp eax, edx
cmovb eax, edx
cmp eax, dword [ebp + 0xb4]
jae 0x56a29a
mov dword [ebp + 0xb4], eax
mov eax, dword [ebx + 0x14]
mov edi, dword [esp + 0x38]
mov dword [esp], eax
call edi
mov dword [ebp + 0x30], eax
mov eax, dword [ebx + 0x18]
sub esp, 4
mov dword [esp], eax
call edi
sub esp, 4
mov dword [ebp + 0x34], eax
mov eax, dword [esp + 0xc0]
mov dword [eax + 0x20], 1
mov eax, dword [esp + 0xc4]
test eax, eax
je 0x56aded
mov dword [esp], ebp
call fcn.00567270
mov eax, dword [esp + 0xc4]
mov dword [ebp + 0x24], 5
mov esi, dword [esp + 0xc4]
mov dword [eax], 1
mov dword [eax + 4], ebp
mov eax, dword [ebp + 0x170]
mov dword [esi + 0xc], eax
jmp 0x569c50
test ebp, ebp
jne case.0x5699d3.0
mov eax, dword [ebx + 0x10]
mov dword [esp], eax
mov eax, dword [sym.imp.WS2_32.dll_ntohl]
mov dword [esp + 0x38], eax
call eax
mov edi, eax
lea eax, [eax - 1]
sub esp, 4
cmp eax, 0xfe
ja case.0x5699d3.0
mov esi, dword [esp + 0xc0]
mov eax, dword [esp + 0xc0]
imul ecx, dword [esi + 0x28], 0x178
mov eax, dword [eax + 0x24]
add ecx, eax
cmp eax, ecx
jae case.0x5699d3.0
mov dword [esp + 0x44], edi
xor esi, esi
mov edi, dword [esp + 0xc0]
jmp 0x56a382
test ebp, ebp
cmove ebp, eax
add eax, 0x178
cmp eax, ecx
jae 0x56a740
mov edx, dword [eax + 0x24]
test edx, edx
je 0x56a370
cmp edx, 1
je 0x56a375
mov edx, dword [edi + 0x286c]
cmp dword [eax + 0x18], edx
jne 0x56a375
movzx edx, word [edi + 0x2870]
cmp word [eax + 0x1c], dx
je 0x56aafc
add esi, 1
jmp 0x56a375
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x569c50
cmp eax, 9
je 0x569c50
movzx eax, word [ebx + 6]
mov dword [esp], eax
mov eax, dword [esp + 0x34]
call eax
sub esp, 4
movzx ecx, ax
mov eax, dword [esp + 0xc0]
mov eax, dword [eax + 0x30]
mov edx, eax
mov edi, eax
xor dx, dx
and edi, 0x8000
or edx, ecx
and ecx, 0x8000
lea esi, [edx - 0x10000]
cmp ecx, edi
cmova edx, esi
mov esi, eax
sub esi, edx
cmp esi, 0x5265bff
ja 0x569c50
mov edx, 1
test esi, esi
cmove esi, edx
mov edx, dword [ebp + 0x4c]
test edx, edx
jne 0x56ae5f
lea edx, [esi + 1]
mov dword [ebp + 0xa8], esi
shr edx, 1
mov dword [ebp + 0xac], edx
mov esi, dword [ebp + 0xa8]
cmp esi, dword [ebp + 0x9c]
jae 0x56a44a
mov dword [ebp + 0x9c], esi
mov ecx, dword [ebp + 0xac]
cmp ecx, dword [ebp + 0xa4]
jbe 0x56a45e
mov dword [ebp + 0xa4], ecx
mov edi, dword [ebp + 0x78]
test edi, edi
je 0x56a47d
mov edx, eax
sub edx, edi
cmp edx, 0x5265bff
jbe 0x56a475
sub edi, eax
mov edx, edi
cmp dword [ebp + 0x84], edx
ja 0x56a4ae
mov edx, dword [ebp + 0x9c]
mov edi, 1
mov dword [ebp + 0x78], eax
mov dword [ebp + 0x9c], esi
mov dword [ebp + 0x98], edx
mov edx, dword [ebp + 0xa4]
mov dword [ebp + 0xa4], ecx
test edx, edx
cmove edx, edi
mov dword [ebp + 0xa0], edx
test eax, eax
mov edx, 1
mov dword [ebp + 0x54], 0
cmove eax, edx
mov dword [ebp + 0x4c], eax
movzx eax, word [ebx + 4]
mov dword [esp], eax
mov eax, dword [esp + 0x34]
call eax
movzx ecx, byte [ebx + 1]
movzx edx, ax
sub esp, 4
mov eax, ebp
call fcn.00568c40
mov edx, dword [ebp + 0x24]
cmp edx, 6
je 0x56aefc
cmp edx, 7
je 0x56aed9
cmp edx, 2
jne 0x569c50
cmp eax, 3
jne case.0x5699d3.0
mov eax, dword [esp + 0xc0]
cmp dword [esp + 0xc4], 0
mov dword [eax + 0x20], 1
mov dword [esp], ebp
jne 0x56a2da
call fcn.005672a0
mov dword [ebp + 0x24], 3
test byte [ebp + 0xe8], 1
jne 0x569c50
mov eax, dword [esp + 0xc0]
mov dword [esp + 4], ebp
add eax, 0x34
mov dword [esp], eax
call fcn.00566d30
or word [ebp + 0xe8], 1
jmp 0x569c50
mov eax, dword [ebp + 0x24]
sub eax, 5
cmp eax, 1
jbe 0x569c50
jmp case.0x5699d3.0
movzx eax, byte [ebx + 1]
cmp eax, dword [ebp + 0x2c]
jae case.0x5699d3.0
mov eax, dword [ebp + 0x24]
sub eax, 5
cmp eax, 1
ja case.0x5699d3.0
movzx eax, word [ebx + 6]
mov dword [esp], eax
mov eax, dword [esp + 0x34]
call eax
sub esp, 4
movzx eax, ax
mov esi, dword [esp + 0xc0]
add dword [esp + 0x30], eax
mov edi, dword [esp + 0x30]
cmp eax, dword [esi + 0x289c]
ja case.0x5699d3.0
mov edx, dword [esi + 0x2874]
cmp edi, edx
jb case.0x5699d3.0
add edx, dword [esi + 0x2878]
cmp edi, edx
ja case.0x5699d3.0
mov dword [esp + 0xc], eax
lea eax, [ebx + 8]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
jmp 0x569a43
mov eax, dword [ebp + 0x85c]
test eax, eax
je 0x569ac0
mov ecx, dword [ebp + 0x864]
test ecx, ecx
je 0x569ac0
mov edi, 0x1000
lea esi, [ebp + 0x186c]
lea edx, [esi + ebx]
sub edi, ebx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], edx
mov edx, dword [ebp + 0x2878]
sub edx, ebx
mov dword [esp + 8], edx
mov edx, dword [ebp + 0x2874]
mov dword [esp], eax
add edx, ebx
mov dword [esp + 4], edx
call ecx
lea edx, [eax - 1]
cmp edi, edx
jbe 0x569ac0
cmp ebx, 4
jae 0x56ace9
test ebx, ebx
je 0x56a687
mov edi, dword [esp + 0x3c]
movzx edx, byte [edi]
mov byte [ebp + 0x186c], dl
test bl, 2
jne 0x56afef
add eax, ebx
mov dword [ebp + 0x2874], esi
mov dword [ebp + 0x2878], eax
mov eax, dword [ebp + 0x858]
jmp 0x5698df
cmp word [esp + 0x42], 0
jns case.0x5699d3.0
mov eax, dword [esp + 0x3c]
movzx eax, word [eax + 2]
mov dword [esp], eax
mov eax, dword [esp + 0x34]
call eax
mov ecx, dword [ebp + 0x24]
sub esp, 4
cmp ecx, 9
ja 0x56a6e0
mov edx, 1
shl edx, cl
and edx, 0x285
jne 0x569c59
cmp ecx, 8
je 0x56a70e
movzx eax, ax
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov dword [esp], ebp
call fcn.00567570
jmp 0x569c59
movzx edi, word [edi + 0x1c]
cmp word [ebp + 0x2870], di
jne 0x5698a7
jmp 0x5698b0
movzx edx, byte [ebx]
and edx, 0xf
cmp dl, 4
jne 0x569c59
jmp 0x56a6e0
call fcn.0056b0b0
mov dword [ebp + 0x30], eax
test byte [esp + 0x64], 2
jne 0x569710
xor eax, eax
jmp 0x569a85
mov edi, dword [esp + 0x44]
test ebp, ebp
je case.0x5699d3.0
mov eax, dword [esp + 0xc0]
cmp dword [eax + 0x2898], esi
jbe case.0x5699d3.0
mov eax, dword [eax + 0x2c]
cmp edi, eax
cmovbe eax, edi
mov dword [esp + 0x4c], eax
mov edi, eax
imul eax, eax, 0x3c
mov dword [esp], eax
mov dword [esp + 0x44], eax
call fcn.0056bbf0
mov dword [ebp + 0x28], eax
test eax, eax
je case.0x5699d3.0
mov eax, dword [ebx + 0x28]
mov dword [ebp + 0x2c], edi
mov dword [ebp + 0x24], 2
mov dword [ebp + 0x10], eax
mov eax, dword [esp + 0xc0]
mov edx, dword [eax + 0x2870]
mov eax, dword [eax + 0x286c]
mov dword [ebp + 0x18], eax
mov eax, dword [esp + 0xc0]
mov dword [ebp + 0x1c], edx
mov eax, dword [eax + 0x18]
mov dword [ebp + 0xb0], eax
movzx eax, word [ebx + 4]
mov dword [esp], eax
mov eax, dword [esp + 0x34]
call eax
mov word [ebp + 0xc], ax
mov eax, dword [ebx + 0x14]
sub esp, 4
mov edi, dword [esp + 0x38]
mov dword [esp], eax
call edi
mov dword [ebp + 0x30], eax
mov eax, dword [ebx + 0x18]
sub esp, 4
mov dword [esp], eax
call edi
mov dword [ebp + 0x34], eax
mov eax, dword [ebx + 0x1c]
sub esp, 4
mov dword [esp], eax
call edi
mov dword [ebp + 0x84], eax
mov eax, dword [ebx + 0x20]
sub esp, 4
mov dword [esp], eax
call edi
mov dword [ebp + 0x7c], eax
mov eax, dword [ebx + 0x24]
sub esp, 4
mov dword [esp], eax
call edi
mov dword [ebp + 0x80], eax
mov eax, dword [ebx + 0x2c]
sub esp, 4
mov dword [esp], eax
call edi
mov dword [ebp + 0x170], eax
movzx eax, byte [ebx + 6]
sub esp, 4
cmp al, 0xff
jne 0x56a841
movzx eax, byte [ebp + 0x14]
add eax, 1
and eax, 3
mov byte [esp + 0x48], al
cmp al, byte [ebp + 0x14]
jne 0x56a85a
add eax, 1
and eax, 3
mov byte [esp + 0x48], al
movzx eax, byte [esp + 0x48]
movzx edx, byte [ebp + 0x15]
mov esi, dword [ebp + 0x28]
mov byte [ebp + 0x14], al
movzx eax, byte [ebx + 7]
cmp al, 0xff
cmove eax, edx
add eax, 1
mov ecx, eax
lea eax, [edx + 1]
and ecx, 3
and eax, 3
cmp cl, dl
cmove ecx, eax
mov eax, dword [esp + 0x44]
xor edi, edi
add eax, esi
mov byte [esp + 0x50], cl
mov byte [ebp + 0x15], cl
cmp esi, eax
jae 0x56a904
xor eax, eax
xor ecx, ecx
mov word [esi + 2], ax
xor eax, eax
mov word [esi + 0x26], ax
xor eax, eax
mov word [esi + 0x28], ax
lea eax, [esi + 0x2c]
mov word [esi], cx
mov dword [esp], eax
call fcn.00566d20
lea eax, [esi + 0x34]
mov dword [esp], eax
call fcn.00566d20
xor eax, eax
lea ecx, [esi + 0xa]
mov dword [esi + 6], 0
mov word [esi + 4], ax
and ecx, 0xfffffffc
lea eax, [esi + 6]
sub eax, ecx
mov dword [esi + 0x22], 0
lea edx, [eax + 0x20]
xor eax, eax
and edx, 0xfffffffc
mov dword [ecx + eax], edi
add eax, 4
cmp eax, edx
jb 0x56a8ec
mov eax, dword [esp + 0x44]
add esi, 0x3c
add eax, dword [ebp + 0x28]
cmp esi, eax
jb 0x56a898
mov eax, dword [ebx + 8]
mov dword [esp], eax
mov eax, dword [esp + 0x38]
call eax
mov edx, 0x1000
sub esp, 4
cmp eax, edx
cmova eax, edx
mov edx, 0x240
cmp eax, edx
cmovb eax, edx
cmp eax, dword [ebp + 0xb0]
jae 0x56a935
mov dword [ebp + 0xb0], eax
mov eax, dword [esp + 0xc0]
mov edx, dword [ebp + 0x30]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x56adc6
test edx, edx
je 0x56adb6
cmp eax, edx
cmova eax, edx
shr eax, 0x10
shl eax, 0xc
mov dword [ebp + 0xb4], eax
cmp eax, 0xfff
ja 0x56ae4f
mov dword [ebp + 0xb4], 0x1000
mov eax, dword [esp + 0xc0]
mov eax, dword [eax + 0xc]
mov edi, eax
shr edi, 0x10
shl edi, 0xc
test eax, eax
mov eax, 0x10000
cmove edi, eax
mov eax, dword [ebx + 0xc]
mov dword [esp], eax
mov eax, dword [esp + 0x38]
call eax
sub esp, 4
cmp eax, edi
jb 0x56add9
mov eax, 0xffffff83
mov word [esp + 0x70], ax
movzx eax, word [ebp + 0xe]
mov dword [esp], eax
call dword [sym.imp.WS2_32.dll_htons]
mov esi, dword [sym.imp.WS2_32.dll_htonl]
sub esp, 4
mov word [esp + 0x74], ax
movzx eax, byte [esp + 0x48]
mov byte [esp + 0x76], al
movzx eax, byte [esp + 0x50]
mov byte [esp + 0x77], al
mov eax, dword [ebp + 0xb0]
mov dword [esp], eax
call esi
sub esp, 4
mov dword [esp + 0x78], eax
mov eax, 0x10000
cmp edi, eax
cmova edi, eax
mov eax, 0x1000
cmp edi, eax
cmovb edi, eax
mov dword [esp], edi
call esi
sub esp, 4
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call esi
sub esp, 4
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0xc0]
mov eax, dword [eax + 0xc]
mov dword [esp], eax
call esi
sub esp, 4
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0xc0]
mov eax, dword [eax + 0x10]
mov dword [esp], eax
call esi
sub esp, 4
mov dword [esp + 0x88], eax
mov eax, dword [ebp + 0x84]
mov dword [esp], eax
call esi
sub esp, 4
mov dword [esp + 0x8c], eax
mov eax, dword [ebp + 0x7c]
mov dword [esp], eax
call esi
sub esp, 4
mov dword [esp + 0x90], eax
mov eax, dword [ebp + 0x80]
mov dword [esp], eax
call esi
sub esp, 4
mov dword [esp + 0x94], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x10], 0
mov dword [esp + 0x98], eax
lea eax, [esp + 0x70]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], ebp
call fcn.00567ac0
jmp 0x569c50
mov edi, dword [esp + 0xc0]
mov edx, dword [edi + 0x10]
cmp eax, edx
cmovb eax, edx
shr eax, 0x10
shl eax, 0xc
jmp 0x569d3b
mov ecx, dword [esi + 0x10]
test ecx, ecx
jne 0x56aacc
mov dword [ebp + 0xb4], 0x10000
jmp 0x569c50
mov edx, dword [ebx + 0x28]
cmp dword [eax + 0x10], edx
jne 0x56a3aa
mov ebp, edi
jmp 0x569a68
cmp ax, cx
jb 0x569c50
jmp 0x569f56
cmp ax, cx
jb 0x569c50
add ecx, 6
cmp ax, cx
ja 0x569c50
cmp di, dx
jne 0x56ab4b
mov eax, dword [esp + 0x44]
movzx esi, word [esp + 0x48]
cmp si, word [eax + 0x28]
jbe 0x569c50
mov eax, dword [ebx + 0xc]
mov dword [esp], eax
call dword [sym.imp.WS2_32.dll_ntohl]
sub esp, 4
mov dword [esp + 0x58], eax
mov eax, dword [ebx + 8]
mov dword [esp], eax
call dword [sym.imp.WS2_32.dll_ntohl]
sub esp, 4
mov dword [esp + 0x50], eax
mov eax, dword [ebx + 0x14]
mov dword [esp], eax
call dword [sym.imp.WS2_32.dll_ntohl]
sub esp, 4
mov dword [esp + 0x54], eax
mov eax, dword [ebx + 0x10]
mov dword [esp], eax
call dword [sym.imp.WS2_32.dll_ntohl]
sub esp, 4
mov esi, eax
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x5c], eax
cmp ecx, 0x100000
ja case.0x5699d3.0
cmp dword [esp + 0x58], ecx
jae case.0x5699d3.0
mov ecx, dword [esp + 0xc0]
cmp eax, dword [ecx + 0x289c]
ja case.0x5699d3.0
mov eax, dword [esp + 0x54]
cmp eax, esi
jae case.0x5699d3.0
sub esi, eax
cmp dword [esp + 0x38], esi
ja case.0x5699d3.0
mov eax, dword [esp + 0x44]
mov esi, dword [eax + 0x38]
lea ecx, [eax + 0x34]
cmp ecx, esi
je 0x56ac2a
mov dword [esp + 0x4c], ebx
movzx edx, word [eax + 0x26]
movzx ebx, word [esp + 0x48]
jmp 0x56ac18
cmp dx, ax
ja 0x56ac11
cmp di, ax
ja 0x56ac26
jb 0x56ac11
cmp bx, word [esi + 0xa]
jae 0x56afa3
mov esi, dword [esi + 4]
cmp ecx, esi
je 0x56ac26
movzx eax, word [esi + 8]
cmp di, dx
jae 0x56abfb
cmp dx, ax
ja 0x56ac00
mov ebx, dword [esp + 0x4c]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x10], 8
mov dword [esp + 8], 0
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 4], ebx
mov dword [esp + 0xc], eax
mov dword [esp], ebp
call fcn.005681b0
mov esi, eax
test eax, eax
je case.0x5699d3.0
mov edi, dword [esp + 0x58]
mov eax, dword [esi + 0x44]
mov edx, edi
mov ecx, edi
shr edx, 5
lea eax, [eax + edx*4]
mov edx, 1
shl edx, cl
mov ecx, edx
and ecx, dword [eax]
jne 0x569c50
sub dword [esi + 0x40], 1
mov ecx, dword [esp + 0x38]
or dword [eax], edx
mov eax, dword [esi + 0x48]
mov edi, dword [esp + 0x54]
mov edx, dword [eax + 0xc]
add ecx, edi
cmp ecx, edx
jbe 0x56aca2
sub edx, edi
mov dword [esp + 0x38], edx
mov edi, dword [esp + 0x54]
add edi, dword [eax + 8]
lea edx, [ebx + 0x18]
mov eax, edi
mov edi, dword [esp + 0x38]
mov dword [esp + 4], edx
mov dword [esp], eax
mov dword [esp + 8], edi
call sub.msvcrt.dll_memcpy
cmp dword [esi + 0x40], 0
jne 0x569c50
mov eax, dword [esp + 0x44]
mov dword [esp + 8], 0
mov dword [esp], ebp
mov dword [esp + 4], eax
call fcn.00567ea0
jmp 0x569c50
mov ecx, dword [esp + 0x3c]
lea edi, [ebp + 0x1870]
and edi, 0xfffffffc
mov edx, dword [ecx]
mov dword [ebp + 0x186c], edx
mov edx, dword [ecx + ebx - 4]
mov dword [esi + ebx - 4], edx
mov edx, esi
sub edx, edi
sub ecx, edx
add edx, ebx
and edx, 0xfffffffc
cmp edx, 4
jb 0x56a687
mov dword [esp + 0x44], eax
and edx, 0xfffffffc
mov dword [esp + 0x38], edx
xor edx, edx
mov eax, dword [ecx + edx]
mov dword [edi + edx], eax
add edx, 4
cmp edx, dword [esp + 0x38]
jb 0x56ad27
mov eax, dword [esp + 0x44]
jmp 0x56a687
mov edx, dword [esp + 0x38]
mov eax, 1
mov ecx, esi
shl eax, cl
shr edx, 5
and eax, dword [ebp + edx*4 + 0xf0]
je 0x569e55
jmp 0x569c50
mov ebp, eax
jmp 0x569a68
mov eax, 0xffffff6d
sar eax, cl
test al, 1
jne 0x56a133
mov dword [esp], ebp
call fcn.005672a0
mov dword [ebp + 0x24], 9
test byte [ebp + 0xe8], 1
jne 0x56a165
mov eax, dword [esp + 0xc0]
mov dword [esp + 4], ebp
add eax, 0x34
mov dword [esp], eax
call fcn.00566d30
or word [ebp + 0xe8], 1
jmp 0x56a15a
cmp eax, edx
cmovb eax, edx
shr eax, 0x10
shl eax, 0xc
jmp 0x56a95d
test edx, edx
jne 0x56adb6
mov dword [ebp + 0xb4], 0x10000
jmp 0x56a978
mov eax, dword [ebx + 0xc]
mov dword [esp], eax
mov eax, dword [esp + 0x38]
call eax
mov edi, eax
push edx
jmp 0x56a9ab
xor eax, eax
cmp dword [ebp + 0x24], 1
mov dword [esp], ebp
sete al
mov esi, eax
call fcn.005672a0
add esi, 3
mov dword [ebp + 0x24], esi
test byte [ebp + 0xe8], 1
jne 0x569c50
jmp 0x56a53f
ja 0x56a030
movzx eax, byte [esi + 0xc]
and eax, 0xf
cmp al, 8
jne case.0x5699d3.0
mov eax, dword [esi + 0x48]
mov edi, dword [esp + 0x54]
cmp edi, dword [eax + 0xc]
jne case.0x5699d3.0
mov eax, dword [esp + 0x50]
cmp eax, dword [esi + 0x3c]
je 0x56a07c
jmp case.0x5699d3.0
cmp eax, 0x10000
ja 0x56adca
jmp 0x56a978
mov dword [esp + 4], esi
mov dword [esp], ebp
call fcn.00567060
mov ecx, dword [ebp + 0xac]
mov eax, ecx
shr eax, 2
sub ecx, eax
mov eax, dword [ebp + 0xa8]
cmp esi, eax
jb 0x56af78
sub esi, eax
mov edx, esi
shr esi, 3
add eax, esi
shr edx, 2
mov dword [ebp + 0xa8], eax
mov eax, dword [esp + 0xc0]
add edx, ecx
mov dword [ebp + 0xac], edx
mov eax, dword [eax + 0x30]
jmp 0x56a436
cmp byte [ebx], 0
mov dword [esp], ebp
js 0x56afde
call fcn.005672a0
mov dword [ebp + 0x24], 9
test byte [ebp + 0xe8], 1
jne 0x56a165
jmp 0x56ad93
cmp eax, 4
jne case.0x5699d3.0
mov ecx, dword [esp + 0xc4]
mov eax, dword [esp + 0xc0]
mov edx, ebp
call fcn.00568de0
jmp 0x569c50
mov dword [esp], ebp
call fcn.00567520
test eax, eax
jne 0x569c50
mov eax, dword [ebp + 0x170]
mov dword [esp], ebp
mov dword [esp + 4], eax
call fcn.00567980
jmp 0x569c50
mov dword [esp + 0x30], ebp
mov edi, dword [esp + 0x30]
mov ebp, dword [esp + 0xc0]
mov dword [edi + 0x170], 0
mov dword [esp], edi
call fcn.005672a0
mov dword [edi + 0x24], 9
test byte [edi + 0xe8], 1
jne 0x569a68
mov edi, dword [esp + 0x30]
lea eax, [ebp + 0x34]
mov dword [esp], eax
mov dword [esp + 4], edi
call fcn.00566d30
or word [edi + 0xe8], 1
jmp 0x569a68
mov edx, eax
sub edx, esi
mov esi, edx
shr edx, 3
sub eax, edx
shr esi, 2
mov dword [ebp + 0xa8], eax
mov eax, dword [esp + 0xc0]
add ecx, esi
mov dword [ebp + 0xac], ecx
mov eax, dword [eax + 0x30]
jmp 0x56a436
mov ebx, dword [esp + 0x4c]
ja 0x56ac2a
movzx eax, byte [esi + 0xc]
and eax, 0xf
cmp al, 0xc
jne case.0x5699d3.0
mov eax, dword [esi + 0x48]
mov edi, dword [esp + 0x5c]
cmp edi, dword [eax + 0xc]
jne case.0x5699d3.0
mov eax, dword [esp + 0x50]
cmp eax, dword [esi + 0x3c]
je 0x56ac60
jmp case.0x5699d3.0
call fcn.005672a0
mov dword [ebp + 0x24], 8
jmp 0x56a165
mov edi, dword [esp + 0x3c]
movzx edx, word [edi + ebx - 2]
mov word [esi + ebx - 2], dx
jmp 0x56a687