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

Disassembly:
sub esp, 0x50
push ebx
mov ebx, ecx
mov ecx, dword [0x81a8f4]
push ebp
mov eax, dword [ebx + 0xf0]
push esi
mov dword [esp + 0x4c], eax
mov eax, dword [0xa56e3c]
push edi
mov dword [esp + 0x54], eax
mov eax, dword [0xa27fa8]
xor edi, edi
lea edx, [ecx + ecx + 8]
xor esi, esi
cmp eax, edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], edx
jle 0x54587b
mov ecx, dword [0xa27f9c]
push edi
mov ecx, dword [ecx + esi*4]
mov edx, dword [ecx]
call dword [edx + 0x11c]
mov eax, dword [0xa27fa8]
inc esi
cmp esi, eax
jl 0x54585f
cmp dword [ebx + 0x13c], edi
jle 0x5458f5
mov esi, edi
and esi, 0x800001ff
jns 0x545895
dec esi
or esi, 0xfffffe00
inc esi
mov eax, edi
cdq
and edx, 0x1ff
add eax, edx
mov edx, dword [ebx + 0xf0]
sar eax, 9
movsx esi, si
movsx eax, ax
lea ecx, [esi + eax]
cmp ecx, edx
jle 0x5458d1
mov ebp, esi
sub ebp, eax
cmp ebp, edx
jge 0x5458d1
sub eax, esi
cmp eax, edx
jge 0x5458d1
mov eax, dword [ebx + 0xf4]
lea edx, [edx + eax*2]
cmp ecx, edx
jle 0x5458e8
mov eax, dword [ebx + 0x138]
mov eax, dword [eax + edi*4]
test eax, eax
je 0x5458e8
mov cl, byte [esp + 0x6c]
mov byte [eax + 0x11b], cl
mov eax, dword [ebx + 0x13c]
inc edi
cmp edi, eax
jl 0x545883
xor edi, edi
mov al, byte [esp + 0x68]
mov dword [esp + 0x34], edi
test al, al
jne 0x545ebc
mov eax, dword [esp + 0x4c]
imul eax, dword [esp + 0x50]
lea edx, [eax + eax*4]
lea eax, [eax + edx*8]
shl eax, 3
push eax
call fcn.0076d5a7
mov dword [esp + 0x3c], eax
mov dword [esp + 0x4c], eax
mov eax, dword [ebx + 0xf0]
mov dword [ebx + 0x108], 1
mov dword [ebx + 0x10c], eax
add esp, 4
lea ecx, [eax - 1]
mov dword [ebx + 0x110], ecx
mov edx, dword [ebx + 0x138]
shl eax, 0xb
mov ecx, ebx
lea eax, [eax + edx + 4]
mov dword [ebx + 0x114], eax
call fcn.00557130
mov esi, eax
test esi, esi
mov ecx, dword [esi + 0x24]
mov dword [esp + 0x54], ecx
je 0x545ebc
mov edx, dword [esp + 0x38]
lea ebp, [edx + 0x28]
lea edi, [ebp - 0x28]
push esi
mov ecx, edi
call fcn.00567690
mov eax, dword [esi + 0x24]
mov dword [esp + 0x2c], 0x18
mov dword [ebp - 4], eax
mov ecx, dword [esi + 0x28]
mov dword [ebp], ecx
mov edx, dword [esi + 0x2c]
mov dword [ebp + 4], edx
mov eax, dword [esi + 0x30]
mov dword [ebp + 8], eax
mov ecx, dword [esi + 0x34]
mov dword [ebp + 0xc], ecx
mov edx, dword [esi + 0x38]
mov dword [ebp + 0x10], edx
mov eax, dword [esi + 0x3c]
mov dword [ebp + 0x14], eax
mov ecx, dword [esi + 0x40]
mov dword [ebp + 0x18], ecx
mov edx, dword [esi + 0x44]
mov dword [ebp + 0x1c], edx
mov eax, dword [esi + 0x48]
mov dword [ebp + 0x20], eax
mov ecx, dword [esi + 0x4c]
mov dword [ebp + 0x24], ecx
mov edx, dword [esi + 0x50]
mov dword [ebp + 0x28], edx
mov eax, dword [esi + 0x54]
mov dword [ebp + 0x2c], eax
mov ecx, dword [esi + 0x58]
mov dword [ebp + 0x30], ecx
mov edx, dword [esi + 0x5c]
mov dword [ebp + 0x34], edx
mov eax, dword [esi + 0x60]
mov dword [ebp + 0x38], eax
mov ecx, dword [esi + 0x64]
lea edx, [esi + 0x68]
mov dword [ebp + 0x3c], ecx
lea eax, [ebp + 0x40]
mov ecx, dword [edx]
mov dword [eax], ecx
mov ecx, dword [edx + 4]
mov dword [eax + 4], ecx
mov ecx, dword [edx + 8]
mov dword [eax + 8], ecx
mov ecx, esi
mov edx, dword [edx + 0xc]
sub ecx, edi
mov dword [eax + 0xc], edx
mov eax, dword [esi + 0x78]
mov dword [ebp + 0x50], eax
lea eax, [ebp + 0x54]
mov dx, word [ecx + eax]
mov word [eax], dx
mov edx, dword [esp + 0x2c]
add eax, 2
dec edx
mov dword [esp + 0x2c], edx
jne 0x545a1b
lea eax, [edi + 0xac]
mov dword [esp + 0x2c], 0x18
mov dx, word [eax + ecx]
mov word [eax], dx
mov edx, dword [esp + 0x2c]
add eax, 2
dec edx
mov dword [esp + 0x2c], edx
jne 0x545a3e
mov eax, dword [esi + 0xdc]
mov dword [edi + 0xdc], eax
mov ecx, dword [esi + 0xe0]
mov dword [edi + 0xe0], ecx
mov edx, dword [esi + 0xe4]
mov dword [edi + 0xe4], edx
mov eax, dword [esi + 0xe8]
mov dword [edi + 0xe8], eax
mov ecx, dword [esi + 0xec]
mov dword [edi + 0xec], ecx
mov edx, dword [esi + 0xf0]
mov dword [edi + 0xf0], edx
mov eax, dword [esi + 0xf4]
mov dword [edi + 0xf4], eax
mov ecx, dword [esi + 0xf8]
mov dword [edi + 0xf8], ecx
mov edx, dword [esi + 0xfc]
mov dword [edi + 0xfc], edx
mov eax, dword [esi + 0x100]
mov dword [edi + 0x100], eax
mov ecx, dword [esi + 0x104]
mov dword [edi + 0x104], ecx
mov dx, word [esi + 0x108]
mov word [edi + 0x108], dx
mov ax, word [esi + 0x10a]
mov word [edi + 0x10a], ax
mov cx, word [esi + 0x10c]
mov word [edi + 0x10c], cx
mov dx, word [esi + 0x10e]
mov word [edi + 0x10e], dx
mov ax, word [esi + 0x110]
mov word [edi + 0x110], ax
mov cx, word [esi + 0x112]
mov word [edi + 0x112], cx
mov dx, word [esi + 0x114]
mov word [edi + 0x114], dx
mov ax, word [esi + 0x116]
mov word [edi + 0x116], ax
mov cl, byte [esi + 0x118]
mov byte [edi + 0x118], cl
mov dl, byte [esi + 0x119]
mov byte [edi + 0x119], dl
mov al, byte [esi + 0x11a]
mov byte [edi + 0x11a], al
mov cl, byte [esi + 0x11b]
mov byte [edi + 0x11b], cl
mov dl, byte [esi + 0x11c]
mov byte [edi + 0x11c], dl
mov al, byte [esi + 0x11d]
mov byte [edi + 0x11d], al
mov cl, byte [esi + 0x11e]
mov byte [edi + 0x11e], cl
mov dl, byte [esi + 0x11f]
mov byte [edi + 0x11f], dl
mov al, byte [esi + 0x120]
mov byte [edi + 0x120], al
mov cl, byte [esi + 0x121]
mov byte [edi + 0x121], cl
mov dl, byte [esi + 0x122]
mov byte [edi + 0x122], dl
mov eax, dword [esi + 0x124]
mov dword [edi + 0x124], eax
mov ecx, dword [esi + 0x128]
mov dword [edi + 0x128], ecx
mov ecx, dword [edi + 0x12c]
mov edx, dword [esi + 0x12c]
mov eax, ecx
xor eax, edx
and eax, 1
xor eax, ecx
mov dword [edi + 0x12c], eax
mov edx, dword [esi + 0x12c]
mov ecx, eax
xor ecx, edx
and ecx, 2
xor ecx, eax
mov dword [edi + 0x12c], ecx
mov edx, dword [esi + 0x12c]
mov eax, ecx
xor eax, edx
and eax, 4
xor eax, ecx
mov dword [edi + 0x12c], eax
mov edx, dword [esi + 0x12c]
mov ecx, eax
xor ecx, edx
and ecx, 8
xor ecx, eax
mov dword [edi + 0x12c], ecx
mov eax, dword [esi + 0x12c]
mov edx, ecx
xor edx, eax
and edx, 0x10
xor edx, ecx
mov dword [edi + 0x12c], edx
mov eax, dword [esi + 0x130]
mov dword [edi + 0x130], eax
mov ecx, dword [esi + 0x134]
mov dword [edi + 0x134], ecx
mov dl, byte [esi + 0x138]
mov ecx, dword [edi + 0x140]
mov byte [edi + 0x138], dl
mov eax, dword [esi + 0x13c]
mov dword [edi + 0x13c], eax
mov edx, dword [esi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 1
xor eax, ecx
mov dword [edi + 0x140], eax
mov edx, dword [esi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 2
xor ecx, eax
mov dword [edi + 0x140], ecx
mov edx, dword [esi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 4
xor eax, ecx
mov dword [edi + 0x140], eax
mov edx, dword [esi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 8
xor ecx, eax
mov dword [edi + 0x140], ecx
mov edx, dword [esi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x10
xor eax, ecx
mov dword [edi + 0x140], eax
mov edx, dword [esi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x20
xor ecx, eax
mov dword [edi + 0x140], ecx
mov edx, dword [esi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x40
xor eax, ecx
mov dword [edi + 0x140], eax
mov edx, dword [esi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x80
xor ecx, eax
mov dword [edi + 0x140], ecx
mov edx, dword [esi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x100
xor eax, ecx
mov dword [edi + 0x140], eax
mov edx, dword [esi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x200
xor ecx, eax
mov dword [edi + 0x140], ecx
mov edx, dword [esi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x400
xor eax, ecx
mov dword [edi + 0x140], eax
mov edx, dword [esi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x800
xor ecx, eax
mov dword [edi + 0x140], ecx
mov edx, dword [esi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x1000
xor eax, ecx
mov dword [edi + 0x140], eax
mov edx, dword [esi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x2000
xor ecx, eax
mov dword [edi + 0x140], ecx
mov edx, dword [esi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x4000
xor eax, ecx
mov dword [edi + 0x140], eax
mov edx, dword [esi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x8000
xor ecx, eax
mov dword [edi + 0x140], ecx
mov edx, dword [esi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x10000
xor eax, ecx
mov dword [edi + 0x140], eax
mov edx, dword [esi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x20000
xor ecx, eax
mov dword [edi + 0x140], ecx
mov edx, dword [esi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x40000
xor eax, ecx
mov dword [edi + 0x140], eax
mov edx, dword [esi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x80000
xor ecx, eax
mov dword [edi + 0x140], ecx
mov edx, dword [esi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x100000
xor eax, ecx
mov dword [edi + 0x140], eax
mov edx, dword [esi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x200000
xor ecx, eax
mov dword [edi + 0x140], ecx
mov eax, dword [esi + 0x140]
mov edx, ecx
xor edx, eax
and edx, 0x400000
xor edx, ecx
xor eax, eax
mov dword [edi + 0x140], edx
mov dword [ebp + 4], eax
mov ecx, ebx
mov dword [ebp + 8], eax
call fcn.00557130
mov edx, dword [esp + 0x34]
mov esi, eax
inc edx
add ebp, 0x148
test esi, esi
mov dword [esp + 0x34], edx
jne 0x545979
mov ecx, dword [esp + 0x64]
lea eax, [ebx + 0xe8]
mov edx, ecx
mov esi, eax
xor ebp, ebp
mov edi, dword [edx]
mov dword [esi], edi
mov edi, dword [edx + 4]
mov dword [esi + 4], edi
mov edi, dword [edx + 8]
mov dword [esi + 8], edi
mov edx, dword [edx + 0xc]
mov dword [esi + 0xc], edx
mov edx, dword [ebx + 0xf0]
mov dword [eax], ebp
mov eax, 0x3f
cmp edx, eax
mov dword [ebx + 0xec], ebp
jg 0x545f01
cmp dword [ebx + 0xf4], eax
jle 0x545f0b
mov dword [0x81bc88], 2
mov eax, dword [0x81a8f0]
mov edx, dword [0x81a8f4]
mov dword [0xa58614], eax
mov dword [esp + 0x3c], ebp
lea eax, [eax + edx*2]
mov edx, 1
mov dword [0xa58618], eax
mov dword [ebx + 0x120], edx
mov dword [ebx + 0x124], edx
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx + 8]
lea eax, [eax + ecx - 1]
mov dword [ebx + 0x128], eax
mov dword [ebx + 0x12c], eax
lea eax, [eax + eax + 2]
test eax, eax
jle 0x54606c
mov dword [esp + 0x2c], ebp
mov ecx, dword [ebx + 0x128]
xor esi, esi
add ecx, 2
test ecx, ecx
jle 0x546042
movsx edx, bp
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x14]
mov word [esp + 0x20], si
movsx ecx, si
mov word [esp + 0x22], bp
lea edx, [ecx + eax]
mov eax, dword [ebx + 0xf0]
cmp edx, eax
jle 0x546030
mov edi, ecx
sub edi, dword [esp + 0x14]
cmp edi, eax
jge 0x546030
mov edi, dword [esp + 0x14]
sub edi, ecx
cmp edi, eax
jge 0x546030
mov ecx, dword [ebx + 0xf4]
lea eax, [eax + ecx*2]
cmp edx, eax
jg 0x546030
mov ecx, dword [esp + 0x2c]
mov edx, dword [ebx + 0x138]
lea edi, [ecx + esi]
mov ecx, dword [edx + edi*4]
test ecx, ecx
jne 0x54600c
push 0x148
call fcn.0076d5a7
add esp, 4
test eax, eax
je 0x545fef
mov ecx, eax
call fcn.00470b10
mov ebp, eax
jmp 0x545ff1
xor ebp, ebp
lea eax, [esp + 0x20]
mov ecx, ebp
push eax
call fcn.0047a050
mov ecx, dword [ebx + 0x138]
mov dword [ecx + edi*4], ebp
mov ebp, dword [esp + 0x3c]
jmp 0x54601d
call fcn.00470b10
lea edx, [esp + 0x20]
mov ecx, eax
push edx
call fcn.0047a050
mov eax, dword [ebx + 0x138]
mov dl, byte [esp + 0x6c]
mov ecx, dword [eax + edi*4]
mov byte [ecx + 0x11b], dl
mov eax, dword [ebx + 0x128]
inc esi
add eax, 2
cmp esi, eax
jl 0x545f78
mov ecx, dword [esp + 0x2c]
inc ebp
add ecx, 0x200
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x2c], ecx
mov ecx, dword [ebx + 0x12c]
lea edx, [ecx + ecx + 2]
cmp ebp, edx
jl 0x545f5e
mov edx, 1
mov al, byte [esp + 0x68]
mov byte [esp + 0x13], 0
test al, al
jne 0x546cc1
mov eax, dword [ebx + 0xf0]
mov dword [ebx + 0x108], edx
mov dword [ebx + 0x10c], eax
lea ecx, [eax - 1]
mov dword [ebx + 0x110], ecx
mov edx, dword [ebx + 0x138]
shl eax, 0xb
mov ecx, ebx
lea eax, [eax + edx + 4]
mov dword [ebx + 0x114], eax
call fcn.00557130
mov ecx, dword [eax + 0x24]
mov edx, dword [esp + 0x64]
mov ebp, dword [esp + 0x54]
mov edi, dword [esp + 0x56]
mov eax, dword [edx + 4]
mov edx, dword [edx]
mov dword [esp + 0x14], ecx
sub ecx, ebp
mov word [esp + 0x3c], cx
mov ecx, dword [esp + 0x16]
lea esi, [edx + eax]
sub eax, edx
sub ecx, edi
mov word [esp + 0x20], si
mov word [esp + 0x22], ax
mov esi, dword [esp + 0x20]
mov word [esp + 0x3e], cx
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x3e]
sub edx, esi
mov word [esp + 0x68], dx
mov edx, dword [esp + 0x22]
sub eax, edx
mov word [esp + 0x6a], ax
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x68]
test eax, eax
mov dword [esp + 0x2c], ecx
jle 0x5466c5
mov edx, dword [esp + 0x48]
mov dword [esp + 0x3c], eax
lea ebp, [edx + 0x24]
mov eax, dword [ebp]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x2e]
mov dword [esp + 0x54], eax
add ecx, eax
mov eax, dword [esp + 0x56]
add eax, edx
mov word [esp + 0x68], cx
mov word [esp + 0x6a], ax
lea edi, [ebp - 0x24]
movsx eax, ax
movsx ecx, cx
shl eax, 9
add eax, ecx
js 0x546171
cmp eax, 0x40000
jge 0x546171
mov edx, dword [ebx + 0x138]
mov eax, dword [edx + eax*4]
test eax, eax
je 0x546171
mov esi, eax
jmp 0x54617f
mov eax, dword [esp + 0x68]
mov esi, 0xa575f0
mov dword [0xa57614], eax
mov eax, dword [esi + 0x24]
test esi, esi
mov dword [esp + 0x34], eax
je 0x5466b0
push edi
mov ecx, esi
call fcn.00567690
mov ecx, dword [ebp]
mov dword [esp + 0x48], 0x18
mov dword [esi + 0x24], ecx
mov edx, dword [ebp + 4]
mov dword [esi + 0x28], edx
mov eax, dword [ebp + 8]
mov dword [esi + 0x2c], eax
mov ecx, dword [ebp + 0xc]
mov dword [esi + 0x30], ecx
mov edx, dword [ebp + 0x10]
mov dword [esi + 0x34], edx
mov eax, dword [ebp + 0x14]
mov dword [esi + 0x38], eax
mov ecx, dword [ebp + 0x18]
mov dword [esi + 0x3c], ecx
mov edx, dword [ebp + 0x1c]
mov dword [esi + 0x40], edx
mov eax, dword [ebp + 0x20]
mov dword [esi + 0x44], eax
mov ecx, dword [ebp + 0x24]
mov dword [esi + 0x48], ecx
mov edx, dword [ebp + 0x28]
mov dword [esi + 0x4c], edx
mov eax, dword [ebp + 0x2c]
mov dword [esi + 0x50], eax
mov ecx, dword [ebp + 0x30]
mov dword [esi + 0x54], ecx
mov edx, dword [ebp + 0x34]
mov dword [esi + 0x58], edx
mov eax, dword [ebp + 0x38]
mov dword [esi + 0x5c], eax
mov ecx, dword [ebp + 0x3c]
mov dword [esi + 0x60], ecx
mov edx, dword [ebp + 0x40]
lea eax, [ebp + 0x44]
mov dword [esi + 0x64], edx
lea ecx, [esi + 0x68]
mov edx, dword [eax]
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov edx, dword [eax + 8]
mov dword [ecx + 8], edx
mov eax, dword [eax + 0xc]
mov dword [ecx + 0xc], eax
mov ecx, dword [ebp + 0x54]
mov dword [esi + 0x78], ecx
mov ecx, edi
lea eax, [esi + 0x7c]
sub ecx, esi
mov dx, word [ecx + eax]
mov word [eax], dx
mov edx, dword [esp + 0x48]
add eax, 2
dec edx
mov dword [esp + 0x48], edx
jne 0x54622d
lea eax, [esi + 0xac]
mov dword [esp + 0x48], 0x18
mov dx, word [eax + ecx]
mov word [eax], dx
mov edx, dword [esp + 0x48]
add eax, 2
dec edx
mov dword [esp + 0x48], edx
jne 0x546250
mov eax, dword [edi + 0xdc]
mov dword [esi + 0xdc], eax
mov ecx, dword [edi + 0xe0]
mov dword [esi + 0xe0], ecx
mov edx, dword [edi + 0xe4]
mov dword [esi + 0xe4], edx
mov eax, dword [edi + 0xe8]
mov dword [esi + 0xe8], eax
mov ecx, dword [edi + 0xec]
mov dword [esi + 0xec], ecx
mov edx, dword [edi + 0xf0]
mov dword [esi + 0xf0], edx
mov eax, dword [edi + 0xf4]
mov dword [esi + 0xf4], eax
mov ecx, dword [edi + 0xf8]
mov dword [esi + 0xf8], ecx
mov edx, dword [edi + 0xfc]
mov dword [esi + 0xfc], edx
mov eax, dword [edi + 0x100]
mov dword [esi + 0x100], eax
mov ecx, dword [edi + 0x104]
mov dword [esi + 0x104], ecx
mov dx, word [edi + 0x108]
mov word [esi + 0x108], dx
mov ax, word [edi + 0x10a]
mov word [esi + 0x10a], ax
mov cx, word [edi + 0x10c]
mov word [esi + 0x10c], cx
mov dx, word [edi + 0x10e]
mov word [esi + 0x10e], dx
mov ax, word [edi + 0x110]
mov word [esi + 0x110], ax
mov cx, word [edi + 0x112]
mov word [esi + 0x112], cx
mov dx, word [edi + 0x114]
mov word [esi + 0x114], dx
mov ax, word [edi + 0x116]
mov word [esi + 0x116], ax
mov cl, byte [edi + 0x118]
mov byte [esi + 0x118], cl
mov dl, byte [edi + 0x119]
mov byte [esi + 0x119], dl
mov al, byte [edi + 0x11a]
mov byte [esi + 0x11a], al
mov cl, byte [edi + 0x11b]
mov byte [esi + 0x11b], cl
mov dl, byte [edi + 0x11c]
mov byte [esi + 0x11c], dl
mov al, byte [edi + 0x11d]
mov byte [esi + 0x11d], al
mov cl, byte [edi + 0x11e]
mov byte [esi + 0x11e], cl
mov dl, byte [edi + 0x11f]
mov byte [esi + 0x11f], dl
mov al, byte [edi + 0x120]
mov byte [esi + 0x120], al
mov cl, byte [edi + 0x121]
mov byte [esi + 0x121], cl
mov dl, byte [edi + 0x122]
mov byte [esi + 0x122], dl
mov eax, dword [edi + 0x124]
mov dword [esi + 0x124], eax
mov ecx, dword [edi + 0x128]
mov dword [esi + 0x128], ecx
mov ecx, dword [esi + 0x12c]
mov edx, dword [edi + 0x12c]
mov eax, ecx
xor eax, edx
and eax, 1
xor eax, ecx
mov dword [esi + 0x12c], eax
mov edx, dword [edi + 0x12c]
mov ecx, eax
xor ecx, edx
and ecx, 2
xor ecx, eax
mov dword [esi + 0x12c], ecx
mov edx, dword [edi + 0x12c]
mov eax, ecx
xor eax, edx
and eax, 4
xor eax, ecx
mov dword [esi + 0x12c], eax
mov edx, dword [edi + 0x12c]
mov ecx, eax
xor ecx, edx
and ecx, 8
xor ecx, eax
mov dword [esi + 0x12c], ecx
mov eax, dword [edi + 0x12c]
mov edx, ecx
xor edx, eax
and edx, 0x10
xor edx, ecx
mov dword [esi + 0x12c], edx
mov eax, dword [edi + 0x130]
mov dword [esi + 0x130], eax
mov ecx, dword [edi + 0x134]
mov dword [esi + 0x134], ecx
mov dl, byte [edi + 0x138]
mov ecx, dword [esi + 0x140]
mov byte [esi + 0x138], dl
mov eax, dword [edi + 0x13c]
mov dword [esi + 0x13c], eax
mov edx, dword [edi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 1
xor eax, ecx
mov dword [esi + 0x140], eax
mov edx, dword [edi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 2
xor ecx, eax
mov dword [esi + 0x140], ecx
mov edx, dword [edi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 4
xor eax, ecx
mov dword [esi + 0x140], eax
mov edx, dword [edi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 8
xor ecx, eax
mov dword [esi + 0x140], ecx
mov edx, dword [edi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x10
xor eax, ecx
mov dword [esi + 0x140], eax
mov edx, dword [edi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x20
xor ecx, eax
mov dword [esi + 0x140], ecx
mov edx, dword [edi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x40
xor eax, ecx
mov dword [esi + 0x140], eax
mov edx, dword [edi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x80
xor ecx, eax
mov dword [esi + 0x140], ecx
mov edx, dword [edi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x100
xor eax, ecx
mov dword [esi + 0x140], eax
mov edx, dword [edi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x200
xor ecx, eax
mov dword [esi + 0x140], ecx
mov edx, dword [edi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x400
xor eax, ecx
mov dword [esi + 0x140], eax
mov edx, dword [edi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x800
xor ecx, eax
mov dword [esi + 0x140], ecx
mov edx, dword [edi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x1000
xor eax, ecx
mov dword [esi + 0x140], eax
mov edx, dword [edi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x2000
xor ecx, eax
mov dword [esi + 0x140], ecx
mov edx, dword [edi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x4000
xor eax, ecx
mov dword [esi + 0x140], eax
mov edx, dword [edi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x8000
xor ecx, eax
mov dword [esi + 0x140], ecx
mov edx, dword [edi + 0x140]
xor edx, ecx
and edx, 0x10000
xor edx, ecx
mov dword [esi + 0x140], edx
mov ecx, dword [edi + 0x140]
mov eax, edx
xor eax, ecx
and eax, 0x20000
xor eax, edx
mov dword [esi + 0x140], eax
mov edx, dword [edi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x40000
xor ecx, eax
mov dword [esi + 0x140], ecx
mov edx, dword [edi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x80000
xor eax, ecx
mov dword [esi + 0x140], eax
mov edx, dword [edi + 0x140]
mov ecx, eax
xor ecx, edx
and ecx, 0x100000
xor ecx, eax
mov dword [esi + 0x140], ecx
mov edx, dword [edi + 0x140]
mov eax, ecx
xor eax, edx
and eax, 0x200000
xor eax, ecx
mov dword [esi + 0x140], eax
mov edx, dword [edi + 0x140]
mov ecx, eax
xor ecx, edx
lea edx, [esp + 0x34]
and ecx, 0x400000
push edx
xor ecx, eax
mov dword [esi + 0x140], ecx
mov ecx, esi
call fcn.0047a050
mov eax, dword [esp + 0x3c]
add ebp, 0x148
dec eax
mov dword [esp + 0x3c], eax
jne 0x546128
mov eax, dword [ebx + 0xf0]
mov dword [ebx + 0x108], 1
mov dword [ebx + 0x10c], eax
lea ecx, [eax - 1]
mov dword [ebx + 0x110], ecx
mov edx, dword [ebx + 0x138]
shl eax, 0xb
mov ecx, ebx
lea eax, [eax + edx + 4]
mov dword [ebx + 0x114], eax
call fcn.00557130
test eax, eax
je 0x54683e
mov edx, dword [esp + 0x64]
mov ecx, dword [eax + 0x24]
mov eax, dword [ebx + 0xf0]
mov dword [esp + 0x68], ecx
mov edx, dword [edx + 4]
mov dword [esp + 0x48], ecx
movsx esi, word [esp + 0x6a]
movsx ecx, cx
lea edi, [edx + edx]
mov ebp, eax
sub ebp, edi
lea edi, [ecx + esi]
inc ebp
cmp edi, ebp
jl 0x54678b
mov edi, dword [esp + 0x64]
mov ebp, esi
sub ebp, ecx
mov edi, dword [edi]
lea edi, [eax + edi*2 - 1]
cmp ebp, edi
jg 0x54678b
mov edi, dword [ebx + 0xf4]
mov ebp, dword [0x81a8f4]
sub edi, edx
mov edx, dword [esp + 0x4c]
sub edi, ebp
add edi, edx
lea edx, [ecx + esi]
lea edi, [eax + edi*2]
cmp edx, edi
jg 0x54678b
mov edi, dword [esp + 0x64]
mov edx, dword [esp + 0x50]
mov ebp, dword [edi]
mov edi, dword [0x81a8f0]
sub edx, ebp
sub edx, edi
lea eax, [eax + edx*2 - 1]
mov edx, ecx
sub edx, esi
cmp edx, eax
jle 0x54682f
mov eax, dword [ebx + 0x138]
shl esi, 9
add esi, ecx
mov ecx, dword [eax + esi*4]
test ecx, ecx
je 0x5467a4
mov edx, dword [ecx]
push 1
call dword [edx + 0x20]
push 0x148
call fcn.0076d5a7
add esp, 4
test eax, eax
je 0x5467be
mov ecx, eax
call fcn.00470b10
jmp 0x5467c0
xor eax, eax
mov ecx, dword [ebx + 0x138]
lea edx, [esp + 0x48]
push edx
mov dword [ecx + esi*4], eax
mov eax, dword [ebx + 0x138]
mov ecx, dword [eax + esi*4]
call fcn.0047a050
mov ecx, dword [ebx + 0x138]
mov edx, dword [ecx + esi*4]
mov dword [edx + 0x38], 0xffff
mov eax, dword [ebx + 0x138]
mov ecx, dword [eax + esi*4]
mov byte [ecx + 0x11a], 0
mov edx, dword [ebx + 0x138]
mov eax, dword [edx + esi*4]
mov byte [eax + 0x11c], 0
mov ecx, dword [ebx + 0x138]
mov edx, dword [ecx + esi*4]
mov dword [edx + 0x44], 0xffffffff
mov eax, dword [ebx + 0x138]
mov dl, byte [esp + 0x6c]
mov ecx, dword [eax + esi*4]
mov byte [ecx + 0x11b], dl
mov ecx, ebx
call fcn.00557130
test eax, eax
jne 0x546706
xor esi, esi
mov ecx, dword [0xa255a0]
push esi
call fcn.0065a0a0
test al, al
je 0x546885
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x68]
push eax
push ecx
mov ecx, dword [0xa255a0]
lea edx, [esp + 0x6c]
push esi
push edx
call fcn.00659fe0
mov ecx, eax
call fcn.0042add0
mov eax, dword [eax]
push ecx
mov ecx, esp
push esi
mov dword [ecx], eax
mov ecx, dword [0xa255a0]
call fcn.0065a260
inc esi
cmp esi, 0x65
jl 0x546840
mov eax, dword [0x84e4e8]
xor esi, esi
test eax, eax
jle 0x5468c3
mov ecx, dword [0x84e4dc]
lea edx, [esp + 0x2c]
push edx
mov edi, dword [ecx + esi*4]
lea ecx, [edi + 0x24]
call fcn.005676c0
lea eax, [esp + 0x2c]
lea ecx, [edi + 0x28]
push eax
call fcn.005676c0
mov eax, dword [0x84e4e8]
inc esi
cmp esi, eax
jl 0x546896
push 0
push 0x80
push 0x80
lea ecx, [esp + 0x2c]
call fcn.0041b630
movsx ecx, word [esp + 0x2e]
movsx edx, word [esp + 0x2c]
shl ecx, 8
shl edx, 8
add ecx, 0x80
push 0
add edx, 0x80
push ecx
push edx
lea ecx, [esp + 0x48]
call fcn.0041b630
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x40]
mov ebp, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
sub eax, edx
mov edx, dword [esp + 0x3c]
sub ecx, ebp
push eax
sub edx, esi
push ecx
push edx
lea ecx, [esp + 0x20]
call fcn.0041b630
mov edi, dword [eax]
mov dword [esp + 0x68], 0
mov ebp, dword [eax + 4]
mov dword [esp + 0x58], ebp
mov eax, dword [eax + 8]
mov dword [esp + 0x5c], eax
mov eax, dword [0xa27fa8]
test eax, eax
jle 0x5469d0
mov ecx, dword [0xa27f9c]
mov edx, dword [esp + 0x68]
mov esi, dword [ecx + edx*4]
mov ecx, esi
mov eax, dword [esi]
call dword [eax + 0x2c]
cmp eax, 4
je 0x5469bd
lea ecx, [esi + 0x88]
mov eax, dword [esi + 0x88]
add eax, edi
mov edx, dword [ecx + 4]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x5c]
mov ecx, dword [ecx + 8]
add edx, ecx
mov ecx, dword [esp + 0x24]
push edx
lea edx, [ecx + ebp]
lea ecx, [esp + 0x18]
push edx
push eax
call fcn.0041b630
mov ecx, dword [eax]
mov dword [esp + 0x3c], ecx
mov ecx, esi
mov edx, dword [eax + 4]
mov dword [esp + 0x40], edx
mov edx, dword [esi]
mov eax, dword [eax + 8]
mov dword [esp + 0x44], eax
lea eax, [esp + 0x3c]
push eax
call dword [edx + 0x19c]
mov eax, dword [esp + 0x68]
mov ecx, dword [0xa27fa8]
inc eax
cmp eax, ecx
mov dword [esp + 0x68], eax
jl 0x546950
mov ecx, dword [0xa285a0]
xor eax, eax
test ecx, ecx
mov dword [esp + 0x68], eax
jle 0x546a3d
mov ecx, dword [0xa28594]
mov ecx, dword [ecx + eax*4]
mov edx, dword [ecx + 0xb4]
test edx, edx
jne 0x546a2e
lea edx, [ecx + 0x88]
mov esi, edx
mov eax, dword [esi]
add eax, edi
mov edx, dword [esi + 4]
mov dword [esp + 0x3c], eax
mov eax, dword [ecx]
add edx, ebp
mov esi, dword [esi + 8]
mov ebp, dword [esp + 0x5c]
mov dword [esp + 0x40], edx
lea edx, [esp + 0x3c]
add esi, ebp
push edx
mov dword [esp + 0x48], esi
call dword [eax + 0x19c]
mov ebp, dword [esp + 0x58]
mov eax, dword [esp + 0x68]
mov ecx, dword [0xa285a0]
inc eax
cmp eax, ecx
mov dword [esp + 0x68], eax
jl 0x5469e0
mov ecx, dword [0xa283a4]
mov eax, dword [0xa27fa8]
inc ecx
xor ebp, ebp
test eax, eax
mov dword [0xa283a4], ecx
mov dword [esp + 0x68], ebp
jle 0x546b43
mov eax, dword [0xa27f9c]
mov ecx, dword [eax + ebp*4]
mov edx, dword [ecx]
call dword [edx + 0x2c]
cmp eax, 0x18
mov eax, dword [0xa27f9c]
jne 0x546a8a
mov ecx, dword [eax + ebp*4]
mov edx, dword [ecx + 0x98]
cmp dword [edx + 0x284], 1
je 0x546b31
mov ecx, dword [eax + ebp*4]
lea edx, [esp + 0x6c]
push edx
mov eax, dword [ecx]
call dword [eax + 0x1a0]
mov ecx, dword [0xa27f9c]
mov eax, dword [eax]
push 0
mov dword [esp + 0x68], eax
mov ecx, dword [ecx + ebp*4]
mov edx, dword [ecx]
call dword [edx + 0x100]
mov cx, word [eax]
cmp cx, 0x7fff
jne 0x546ac3
cmp word [eax + 2], cx
je 0x546b31
mov edx, dword [esp + 0x64]
add edx, ecx
mov cx, word [eax + 2]
add cx, word [esp + 0x66]
movsx esi, dx
mov edx, dword [ebx + 0xf0]
movsx ecx, cx
lea edi, [ecx + esi]
cmp edi, edx
jle 0x546b0d
mov ebp, esi
sub ebp, ecx
cmp ebp, edx
jge 0x546b09
sub ecx, esi
cmp ecx, edx
jge 0x546b09
mov ecx, dword [ebx + 0xf4]
lea edx, [edx + ecx*2]
cmp edi, edx
jg 0x546b09
mov ebp, dword [esp + 0x68]
add eax, 4
jmp 0x546ab3
mov ebp, dword [esp + 0x68]
mov eax, dword [0xa27f9c]
mov ecx, dword [eax + ebp*4]
mov edx, dword [ecx]
call dword [edx + 0xd0]
mov eax, dword [0xa27f9c]
mov ecx, dword [eax + ebp*4]
test ecx, ecx
je 0x546b30
mov edx, dword [ecx]
push 1
call dword [edx + 0x20]
dec ebp
mov eax, dword [0xa27fa8]
inc ebp
cmp ebp, eax
mov dword [esp + 0x68], ebp
jl 0x546a5d
mov ecx, dword [0xa283a4]
xor edi, edi
dec ecx
mov dword [0xa283a4], ecx
mov eax, dword [ebx + 0x13c]
test eax, eax
jle 0x546bea
mov eax, dword [ebx + 0x138]
mov ecx, dword [eax + edi*4]
lea eax, [eax + edi*4]
test ecx, ecx
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], ecx
je 0x546bdb
mov esi, edi
and esi, 0x800001ff
jns 0x546b8a
dec esi
or esi, 0xfffffe00
inc esi
mov eax, edi
cdq
and edx, 0x1ff
add eax, edx
mov edx, dword [ebx + 0xf0]
sar eax, 9
movsx esi, si
movsx eax, ax
lea ebp, [esi + eax]
cmp ebp, edx
jle 0x546bca
mov ecx, esi
sub ecx, eax
cmp ecx, edx
jge 0x546bc6
sub eax, esi
cmp eax, edx
jge 0x546bc6
mov eax, dword [ebx + 0xf4]
lea ecx, [edx + eax*2]
cmp ebp, ecx
jle 0x546bdb
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x64]
push 1
mov dword [edx], 0
mov eax, dword [ecx]
call dword [eax + 0x20]
mov eax, dword [ebx + 0x13c]
inc edi
cmp edi, eax
jl 0x546b60
mov eax, dword [ebx + 0xf0]
mov dword [ebx + 0x108], 1
mov dword [ebx + 0x10c], eax
lea ecx, [eax - 1]
mov dword [ebx + 0x110], ecx
mov edx, dword [ebx + 0x138]
shl eax, 0xb
mov ecx, ebx
lea eax, [eax + edx + 4]
mov dword [ebx + 0x114], eax
call fcn.00557130
test eax, eax
je 0x546c71
mov edx, dword [eax + 0x140]
test dl, 0x80
je 0x546c66
mov ecx, dword [eax + 0x2c]
test ecx, ecx
jne 0x546c66
mov ecx, dword [eax + 0x44]
not edx
shr edx, 0xb
and edx, 1
shl edx, 1
cmp ecx, 0x18
je 0x546c5c
cmp ecx, 0x19
je 0x546c5c
push 1
push edx
mov ecx, eax
call fcn.00473300
jmp 0x546c66
push 1
push edx
mov ecx, eax
call fcn.00472ed0
mov ecx, ebx
call fcn.00557130
test eax, eax
jne 0x546c27
mov al, byte [esp + 0x70]
test al, al
je 0x546c85
mov ecx, ebx
call fcn.00546d00
mov byte [esp + 0x13], 1
mov eax, dword [0xa27fa8]
xor esi, esi
test eax, eax
jle 0x546cad
mov ecx, dword [0xa27f9c]
push 1
mov ecx, dword [ecx + esi*4]
mov edx, dword [ecx]
call dword [edx + 0x11c]
mov eax, dword [0xa27fa8]
inc esi
cmp esi, eax
jl 0x546c90
push 2
mov ecx, 0x81a800
call fcn.004dfee0
mov al, byte [esp + 0x13]
test al, al
jne 0x546cd0
mov al, byte [esp + 0x70]
test al, al
je 0x546cd0
mov ecx, ebx
call fcn.00546d00
mov eax, 0xa575f0
test eax, eax
je 0x546ce0
mov ecx, eax
call fcn.00470b10
mov ecx, dword [esp + 0x38]
push ecx
call fcn.0076d2d5
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x50
ret 0x10